NUnit等效于JUnit的规则

问题描述 投票:1回答:2

在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();
    ...
}
c# nunit
2个回答
5
投票

您可以实现自己的TestActionAttribute类,该类运行您的测试前代码和测试后代码。如果打算在每次测试之前和之后执行相同的操作,则可以在类声明中定义您的自定义属性。

例如:

TestActionAttribute

1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.