【发布时间】:2014-07-02 11:41:59
【问题描述】:
编辑:问题已修改。
我正在将几个测试从 nUnit 迁移到 xUnit,并且我有一个问题要重新评估 SetFixture() 方法和构造函数之间的关系。
我的测试有通用的设置方法。根据 xUnit 手册,[Setup] 代码现在应该进入构造函数。考虑这个例子:
public class MyTestClass : IUseFixture<TestFixture> {
private TestObject m_MyObject;
public MyTestClass() {
m_MyObject.Login()
}
public void SetFixture(TestFixture data) {
m_MyObject = data.TestObject;
}
[Fact]
public void MyTest() {
Console.Writeline("My Test");
}
TestObject 在我的 Fixture 类上被初始化一次。在SetFixture() 中,我将其分配给本地成员,以便测试代码可以使用它。但是,我也在安装过程中使用了这个对象。作为在SetFixture() 之前运行的构造函数,我无法使用我的TestObject。该问题的解决方案是什么?
【问题讨论】:
-
对特定代码的一种简化是完全停止维护
m_MyObject- 只需将SetFixture()更改为data.Login()。但我猜你也在做其他事情。如果你是,也许你可以做类似_context = data.Login()的事情来清理和简化逻辑? (或者放弃这个想法,你可以在你的测试的基类中实现IUseFixture<TestFixture>:D) -
已编辑答案以对您更新的问题做出完整答复。随意修改您的问题,就像您在第一个实例中询问第二个表格一样。
-
谢谢鲁本。该问题已按照您的建议进行了修改。
标签: unit-testing integration-testing xunit xunit.net