加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如果另一个单元测试失败,如何设置一个单元测试?

发布时间:2020-12-15 21:00:09 所属栏目:百科 来源:网络整理
导读:在xUnit.net中是否有办法使单元测试依赖于另一个,以便在另一个失败时跳过它? 注意:这不是关于测试之间共享装置或使测试相互耦合等问题.我避免这样做. 例 Given: Unit tests OuterTest and InnerTestCondition: If OuterTest is dependent on InnerTest and
在xUnit.net中是否有办法使单元测试依赖于另一个,以便在另一个失败时跳过它?

注意:这不是关于测试之间共享装置或使测试相互耦合等问题.我避免这样做.

Given:     Unit tests OuterTest and InnerTest
Condition: If OuterTest is dependent on InnerTest and InnerTest fails
Result:    OuterTest is skipped (ideally with an explanation)

合理

这是单元测试序列化的一部分,但我也可以考虑其他用例.我有一个类型Outer,它接受Inner类型的依赖,其中Inner被序列化为Outer序列化的一部分.我有一个内部类型的序列化单元测试,如果失败,我知道外部的序列化单元测试将由于嵌套而失败.

类型看起来像这样:

[Serializable]
class Inner {}

[Serializable]
class Outer {

    public Outer(Inner inner) {
        Inner = inner;
    }

    [Serializable]
    Inner Inner { get; }
}

>我真的不想在Outer的单元测试中使用Stub for Inner,因为这迫使我为Inner引入一个接口并且混乱了一个层次结构,其中只需要这些类型的单个具体实现.它还迫使我为存根创建一个自定义序列化器,这听起来比利益更麻烦.
>鉴于很难为内部类创建存根,以下是我的论点:我不希望两个测试都失败,因为这使得很难找到失败的根本原因.我认为如果跳过Outer的单元测试并发出依赖失败的警告,那就更好了.

问题

在搜索一段时间后,我没有找到关于此用例的任何信息,因此我有以下问题:

>是否可以根据xUnit.net中其他单元测试的结果创建有条件运行的测试?
>这是一个不好的请求或代码味道,如果是这样,为什么?

解决方法

你不想那样做.如果你有一些东西打破了多个测试,那么你希望你的测试能够展示一个问题影响整个系统的所有方法.

在你的情况下你应该做的是通过序列化你的Outer类来进行两行测试.一个是存在的对象,另一个是使用内部类的模拟.

有一个强有力的论据,没有模拟内部类的情况可以被认为是一个“集成”测试,但是,因为它只是使用存在的对象,我认为这是一个灰色区域.

测试外部无法序列化,因为通过查看单元测试的结果,内部不可能是非常重要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读