在我的测试中,下一个流程发生了:


在运行所有测试之前,我会执行一些操作(例如购买产品)
然后在每个测试中,我检查一个断言


我使用NUnit框架来运行测试,所以我使用[TestFixtureSetUp]标记一组在所有测试之前执行一次的操作。然后,我使用[Test]或[TestCase()]运行测试。

通常,我需要检查相同的事情但执行不同的流程。因此,我必须参数化[TestFixtureSetUp]。我能以某种方式做到吗?

因此,我想在所有测试都依赖参数之前进行一次操作。

如果可以使用不同的框架或不同的流程结构,请告诉我)

我的代码示例:

 [TestFixtureSetUp] //This will be done once before all tests
 public void Buy_Regular_One_Draw_Ticket(WayToPay merchant)
 {
          //here I want to do some actions and use different merchants to pay.

          //So how can I send different parameters to this method?

 }

最佳答案

伙计们,下一个解决方案是:类的构造函数在[TestFixtureSetUp]之前运行,因此[TestFixtureSetUp]中执行的所有操作现在都在类的构造函数中进行。

而且我们有能力向构造函数发送参数!为此,我们使用[TestFixture()]。

整个代码如下:

[TestFixture(WaysToPay.Offline)]
[TestFixture(WaysToPay.Neteller)]
public class DepositTests
{
        //Constructor takes parameters from TestFixture
        public DepositTests(WaysToPay merchant)
        {
            //Do actions before tests considering your parameters
        }

        [Test]
        public void Your_test_method()
        {
            //do your verification here
        }
    }


使用这种方法而不是使用[TestFixtureSetUp],可以使测试更加灵活。因此,其行为与[TestFixtureSetUp]可以获取参数的行为相同。

关于unit-testing - 如何参数化TestFixtureSetUp(NUnit),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32712437/

10-15 02:29