Pac*_*aco 70 c# nunit unit-testing
NUnit文档没有告诉我何时使用带有a的方法TestFixtureSetup
以及何时在构造函数中进行设置.
public class MyTest
{
private MyClass myClass;
public MyTest()
{
myClass = new MyClass();
}
[TestFixtureSetUp]
public void Init()
{
myClass = new MyClass();
}
}
Run Code Online (Sandbox Code Playgroud)
关于TestFixtureSetup
与默认构造函数有任何好/坏的做法,或者没有任何区别?
Sam*_*sel 64
为什么需要在测试类中使用构造函数?
我使用[SetUp]
并[TearDown]
标记了在每次测试之前和之后执行代码的方法,以及类似[TestFixtureSetUp]
且[TestFixtureTearDown]
标记的方法,用于在夹具中的所有测试之前和之后仅执行一次代码.
我猜你可能会替换[TestFixtureSetUp]
构造函数(虽然我没有尝试过),但这似乎只是打破了标记方法提供的明确约定.
cas*_*ora 15
我认为这是nUnit团队尚未解决的问题之一.然而,有一个优秀的xUnit项目,它看到了这个确切的问题,并决定构造函数在测试夹具初始化时使用是一件好事.
对于NUnit的,在这种情况下,我最好的做法是使用TestFixtureSetUp
,TestFixtureTearDown
,SetUp
,和TearDown
如文档中描述的方法.
我认为当我没有将nUnit测试夹具视为普通类时,它也会对我有所帮助,即使您使用该构造定义它也是如此.我认为它们是固定装置,这让我超越了心理障碍,让我忽略了这个问题.
Erg*_*wun 12
[TestFixtureSetup]
你可以在构造函数中做的一件事就是从中接收参数[TestFixture]
.
如果要对测试夹具进行参数化,则必须至少对某些设置使用构造函数.到目前为止,我只将其用于集成测试,例如,用于测试具有多个数据提供者的数据访问层:
[TestFixture("System.Data.SqlClient",
"Server=(local)\\SQLEXPRESS;Initial Catalog=MyTestDatabase;Integrated Security=True;Pooling=False"))]
[TestFixture("System.Data.SQLite", "Data Source=MyTestDatabase.s3db")])]
internal class MyDataAccessLayerIntegrationTests
{
MyDataAccessLayerIntegrationTests(
string dataProvider,
string connectionString)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我经常想知道需要什么[TestFixtureSetUp]
,因为有一个简单的,易于理解的第一类语言结构完全相同的东西.
我的偏好是使用构造函数,以利用readonly关键字确保成员变量无法重新初始化.
构造函数和用[TestFixtureSetUp]
属性标记的方法之间存在差异.根据NUnit文档:
建议构造函数没有任何副作用,因为NUnit可能会在会话过程中多次构造对象.
因此,如果您有任何昂贵的初始化,最好使用TestFixtureSetUp
.
归档时间: |
|
查看次数: |
37482 次 |
最近记录: |