如何使用依赖于已运行的TestSetup方法的NUnit测试用例?

詹姆斯·费克斯

我正在使用NUnit 2为C#编写一些单元测试。我的环境是安装了Resharper的Visual Studio 2015 Professional。

我遇到的问题是我尝试使用创建的一些参数化测试TestCaseSourceAttribute在简单的情况下,我可以创建类似这样的测试,它们可以正常运行:

[Test, TestCaseSource(nameof(MyTestCases))]
public void MyTest(string name) {
    Assert.IsFalse(String.IsNullOrEmpty(name));
}

private static IEnumerable<TestCaseData> MyTestCases {
    get {
        yield return new TestCaseData("test");
        yield return new TestCaseData("123");
    }
}

但是,当我尝试实例化必须从数据库实体映射的类型或在初始化过程中检查数据库的类型时,测试运行程序将忽略该测试。例如:

[Test, TestCaseSource(nameof(MyTestCases))]
public void MyTest(MyMappedType instance) {
    Assert.IsTrue(instance.SomeProperty);
}

private static IEnumerable<TestCaseData> MyTestCases {
    get {
        yield return new TestCaseData(GetAnInstanceOfMyMappedType());
        yield return new TestCaseData(GetADifferentInstanceOfMyMappedType());
    }
}

如果实例化MyMappedType在测试主体中,则实例化将正常工作,但是如果任何测试用例实例化了该测试,则将忽略该测试。

我可以使这些测试以参数化方式工作吗?关于此的任何文档参考吗?


更新:

问题似乎是由于测试用例属性中的某些代码取决于TestSetup已经运行的类的方法。有没有办法让安装程序在初始化每个测试用例之前而不是之后运行?

查理

不,在生成测试之前无法调用您的设置。

此外,尽管可以在TestCaseSource方法中实例化对象,但是这些对象将在方法返回时立即超出范围,除非将其保存在某个位置(例如在静态成员中)。当然,这不是一个很好的做法。

重写您的TestCaseSource以提供诸如ints和string之类的参数,这些参数可用于在运行时创建所需的对象。

如果要每个夹具只创建一次这些对象,请使用OneTimeSetUp而不是SetUp并使用参数化的夹具来保存创建它们所需的参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用JUnit测试依赖于环境变量的代码?

如何为线程运行方法编写junit测试用例

如何对依赖于其他方法的测试方法进行单元化

如何测试依赖于useContext钩子的react组件?

使用依赖于Spring Security的JUnit测试Spring Controller

如何对依赖于springBoot applicationContext的单元测试方法进行单元测试?

如何在@Rule运行之前使用Guice在Junit测试用例中注入依赖项?

如何测试依赖于环境变量的Rust方法?

如何在cakephp中运行单个测试用例方法

如何使用依赖于插件的代码运行测试?

如何修补python方法以运行测试用例?

单元测试依赖于StreamReader读取文件的方法

如果我的测试用例失败(如何使用TestNG),如何运行特定方法?

我该如何测试依赖于DomSanitizer的管道?

如何测试依赖于库的代码?

运行依赖于Firestore模拟器的CI测试

使用``已勾选的方法名称''时是否可以参数化NUnit测试用例的显示名称?

如何运行依赖于Android库模块的单元测试?

如何使用ui-router测试依赖于服务的AngularJS控制器?

使用RSpec测试依赖于外部Cassandra调用的方法

NUnit测试用例创建

使用Jest对依赖于HTTP调用的代码进行单元测试的最佳方法?

单独运行测试用例 Nunit Console Runner

如何测试依赖于硬件的功能?

如何在 nunit 测试用例中使用 Author 属性

使用 VS Code 运行 ASP .Net 核心应用程序的 NUnit 测试用例

如何测试依赖于包含 BehaviorSubject 的服务的 Angular 组件?

如何(py)测试依赖于当前时间的函数?

如何对依赖于实例属性的实例方法进行单元测试?