在C#中是否有等效于JUnit的规则?我的意思是一种避免在多个不同测试中重复相同的[SetUp]
和[TearDown]
行的方法。代替:
[SetUp]
public void SetUp()
{
myServer.connect();
}
[TearDown]
public void TearDown()
{
myServer.disconnect();
}
...将逻辑放在可以在多个测试中声明为字段的规则中:
public MyRule extends ExternalResource {
@Override
protected void before() throws Throwable
{
myServer.connect();
};
@Override
protected void after()
{
myServer.disconnect();
};
};
然后
class TestClass
{
@Rule MyRule = new MyRule();
...
}
您可以实现自己的TestActionAttribute
类,该类运行您的测试前代码和测试后代码。如果打算在每次测试之前和之后执行相同的操作,则可以在类声明中定义您的自定义属性。
例如:
TestActionAttribute
NUnit在测试继承中运行良好,因此您可以使用[MyRule] // your custom attribute - applied to all tests
public class ClassTest
{
[Test]
public void MyTest()
{
// ...
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyRuleAttribute : TestActionAttribute
{
public override void BeforeTest(TestDetails testDetails)
{
// connect
}
public override void AfterTest(TestDetails testDetails)
{
// disconnect
}
}
和SetUp
方法创建基本测试类:
TearDown
然后创建一个从基类继承的常规测试类,它将重用[TestFixture]
public class BaseTest
{
[SetUp]
public virtual void SetUpTest()
{
//...
}
[TearDown]
public virtual void TearDownTest()
{
//...
}
}
和SetUp
实现:
TearDown