是否有可能使用Nunit定义一个方法,该方法将在组件中的每个测试之前执行?
要非常明确:我不想在所有测试之前执行一些一些,但我需要在每次测试之前进行一些常规设置。所以,如果我有10个测试,我希望我的方法执行10次。
很遗憾,遗传不是我的选择(我已经将它用于不同的目的,不能混用)
答案 0 :(得分:8)
您可以在其Before方法中定义包含所需代码的Action Attribute。将它应用于程序集,并带有一个参数,指示它应该用于每个测试。
请注意,操作属性在NUnit 2和3之间的工作方式略有不同,因此请务必检查相应的文档级别。
答案 1 :(得分:7)
您可以使用SetupAttribute
设置一个方法,该方法将在TextFixture
类中的每个测试之前执行,但仅在那里。
这样的事情:
[TestFixture]
class SomeTests
{
[SetUp]
public void SetupBeforeEachTest()
{
//Some code
}
}
我知道你说你不能使用继承,但如果你想在程序集中的每个测试之前执行一个方法,我认为这是最好的方法,因为SetUp
属性是从任何基类继承的。因此,如果基类已定义SetUp
方法,则将在派生类中的每个测试方法之前调用该方法:
abstract class BaseTestFixture
{
[SetUp]
public void SetupBeforeEachTest()
{
//Some code
}
}
[TestFixture]
class SomeTests : BaseTestFixure
{
//Tests
}
答案 2 :(得分:0)