将参数从nunit3-console传递给TestFixture构造函数,而不是传递给TestMethod

时间:2017-06-05 12:18:20

标签: c# selenium selenium-webdriver nunit nunit-console

我从nunit3-console执行测试时遇到问题。我需要将参数传递给TestFixture构造函数,但我想调用一个特定的Test。 在我的夹具中,我有两个不同的构造函数和一个没有参数的方法。现在我称之为cdm:

  1. nunit3-console --params username = u1; password = p1 --test namespace.class.Test1 Tests.dll
  2. 我认为,现在nunit尝试将这两个参数传递给我的测试,但是我想把它传递给构造函数,它有

    1. [TestFixtureSource(typeof(TestFixtureSource)," GetParameters")]
    2. 当我使用--where" class =' TestFixtureClassName'"子句参数调用cmd时,会将参数传递给testfixture构造函数,但它会在此fixture中运行所有测试。

      在示例中

      namespace TestNamespace
      {
      [TestFixtureSource("GetTestFixtureSource")]
      public class TestFixture
      {
      private int _a;
      private int _b;
      TestFixture()
      {
      _a = 8;
      _b = 10;
      }
      TestFixture(int a, int b)
      {
      _a = a;
      _b = b;
      }
      [Test]
      public void Test()
      {
      //test1 body
      }
      [Test]
      public void Test2()
      {
      //test2 body
      }
      [Test]
      public void Test3()
      {
      //test3 body
      }
      }
      }
      

      现在在命令提示符下我打电话给这一行:

      1. nunit3-console --params a = 80; b = 100 --test TestNamespace.TestFixture.Test Tests.dll
      2. 这一行的结果是selenium试图用2个参数找到方法Test。但是当你像这样调用nunit-console时:

        1. nunit3-console --params a = 80; b = 100 - 其中class =' TestFixture' Tests.dll
        2. 它找到具有2个参数的合适构造函数并调用它,但在此Fixture中运行所有测试。 现在,我想要实现的是运行单一测试,但将--params传递给TestFixture的合适构造函数。

          希望现在我能更清楚地为你呈现它。

1 个答案:

答案 0 :(得分:0)

您的描述可以使用更多代码来明确您正在做的事情。

但是,根据您的说法,听起来好像运行参数正在夹具构造函数中传递和使用而没有问题。我误解了什么吗?

哪些测试运行是完全独立的事情。如果使用指定类名的--where子句,则告诉运行器运行该类中的所有测试。但是你的描述说只有一种测试方法。请通过展示您在测试代码中所做的事情,您希望将发生的事情以及实际发生的事情,使您的问题更清晰。

如你所见......我开始回答,但意识到我不明白这个问题,所以你可以认为这是一个长篇评论。我会在你更新问题后回答。