【问题标题】:How to parameterize TestFixtureSetUp (NUnit)如何参数化 TestFixtureSetUp (NUnit)
【发布时间】:2015-12-19 04:03:57
【问题描述】:

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

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

我使用 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?

 }

【问题讨论】:

  • 一个例子将极大地帮助你理解你真正想要实现的目标
  • 当然)谢谢你的线索)

标签: unit-testing testing nunit automated-tests


【解决方案1】:

解决方案是下一个: 类的构造函数在 [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]可以获取参数是一样的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多