如何使用依赖于已运行的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 条评论
登录 后参与评论

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用 Servlet 上的 switch 语句运行依赖于 JSP 链接的方法

如何使用 Appium 运行 Python 测试用例?

如何使用SBT运行JUnit 4.11测试用例?