我有一个类,它有一些单元测试,但是当我正在运行测试时,我想用不同的构造函数创建类。这样的事情:NUnit执行替代构造函数
[TestFixture]
public class MyClass
{
public MyClass() { /* set up for production */ }
[TestFixtureConstructor]
public MyClass() { /* set up for testing */ }
[Test]
public void FirstTest()
{
// assert some values
}
}
这甚至可能吗?
我已经考虑过使用静态工厂方法来创建生产类(带有私有构造函数)以及用于测试框架的公共构造函数。
有没有人有任何其他解决方案?
100%正确。对于OP - 你不应该尝试特殊的“只测试”构造函数。如果你需要一个构造函数来获取依赖关系,并且唯一使用它的是测试,那很好,但是不应该让其他人隐藏构造函数。它使您的类更灵活,让消费者传递依赖关系。 – womp 2009-09-18 00:17:35
我同意。这绝对是这样做的错误方式。创建一个单独的类并使用Setup和Teardown属性 – lomaxx 2009-09-18 00:18:03