【发布时间】:2020-03-17 22:25:57
【问题描述】:
在测试类中,构造函数在每次测试之前启动,构造函数提供的初始化数据不能被以下测试访问。
我希望所有测试都可以访问初始化数据。 (只能创建一次)
[Category("Basics")]
[Collection("DD")]
[ExcludeFromCodeCoverage]
public class SecurityTests : TestUnitBase
{
StartUpFixture fixture;
public AuthenticationTests(StartUpFixture fixture)
: base()
{
this.fixture = fixture;
}
[Fact(DisplayName = "Successful response Test1")]
public void SuccessfulResponseTest1()
{
var users = base.Db.Users.FirstOrDefault(x => x.Name == "abc");
...
}
[Fact(DisplayName = "Successful response Test2")]
public void SuccessfulResponseTest2()
{
var users = base.Db.Users.FirstOrDefault(x => x.Name == "xyz");
...
}
提前致谢。
【问题讨论】:
-
在创建派生类的实例时,您必须调用基类的构造函数。 XUnit 在这方面并没有什么不同。但是,您可能根本不使用构造函数,而是使用设置方法?
-
这是每个测试用例从一个新的初始化对象开始的正常方式。您不知道要运行的案例的年表,因此您不应该创建需要连续运行的测试并操作被测类。如果某些案例有其他初始化 - 在 testcasemethod 中重新创建/指定它并继续。
-
XUnit 默认并行执行测试。在测试之间共享状态/值可能会导致奇怪的行为、无缘无故的失败等。
标签: c# unit-testing xunit