在任何测试之前调用的方法(xUnit)

问题描述 投票:0回答:3

有什么方法可以创建在任何测试之前自动调用的方法吗?

[Fact]
public void Test1() { }

[Fact]
public void Test2() { }

private void Prepare()
{
    // Prepare test environment
}

我需要

Prepare
Test1
Test2
之前被调用。应该是这样的:

  1. 打电话
    Prepare()
  2. 打电话
    Test1
  3. 打电话
    Prepare()
  4. 打电话
    Test2

我知道我可以自己称呼它

[Fact]
public void Test1()
{
    Prepare();
}

但是有没有办法做到自动

c# .net unit-testing testing xunit
3个回答
1
投票

在测试类的构造函数中包含对

Prepare
方法的调用。

文档比较其他测试框架,例如

[SetUp]
属性或类似内容在下面提到。

我们认为

[SetUp]
的使用通常是不好的。但是,您可以实现无参数构造函数作为直接替换。


0
投票

NUnit中有一个SetUp属性,您可以将其用于方法,应该在任何测试之前运行。

xUnit 中,您似乎需要自己创建它(见此处


0
投票

您可以在类的构造函数中调用Prepare 方法。所以它会在测试方法之前自动调用。

public class ClassTest
{
    public ClassTest()
    {
        Prepare();
    }
    public void Prepare()
    {
        // your logic
    }

    [Fact]
    public void Test1()
    {
        //Arrange
       
       //Act

       //Assert
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.