在我的测试中,下一个流程发生了:
在运行所有测试之前,我会执行一些操作(例如购买产品)
然后在每个测试中,我检查一个断言
我使用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/