可以通过编程方式启动 TestNGCucumberRunner

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

我想使用 io.cucumber.cucumber-testng 以编程方式启动 Cucumber 测试。我想从 Scala 应用程序开始运行。

我只能通过从 Scala 应用程序外部引导 TestNGCucumberRunner 来启动运行。

更新:

我用 C# 为 NUnit 引擎编写了一段代码。我想要类似的东西,但能够从 Scala 启动测试(所有基础设施都是 Java 代码)。我对 scala 和 sbt 很熟悉,并且对 TestNg 的经验很少(如果 Junit 更适合我想要的,我可以使用它)。 也许还有另一个问题。是否有可能以编程方式将自定义参数传递给 testNg 或 Junit?就像 C# Nunit 中的“package.AddSetting("TestParameters", customRunParametersString);”一样。可以在测试执行期间使用 (TestContext.Parameters) 读取这些参数。

using (ITestEngine engine = TestEngineActivator.CreateInstance()) {
                    ITestFilterService filterService = engine.Services.GetService<ITestFilterService>();
                    engine.WorkDirectory = Guid.NewGuid().ToString();
                    TestPackage package = new TestPackage(dictionaryParameters["ProjectName"] + ".dll");
                    ITestFilterBuilder builder = filterService.GetTestFilterBuilder();
                    builder.SelectWhere(dictionaryParameters["Tag"]);

                    package.AddSetting("TestParameters", customRunParametersString);
                    TestFilter filter = builder.GetFilter();
                    ITestRunner runner = engine.GetRunner(package);
                    Console.WriteLine(@"TEST RUN STARTED : Feature " + dictionaryParameters["Tag"]);
                    result = runner.Run(null, filter);

                    Console.WriteLine(@"TEST RUN FINISH : Feature " + dictionaryParameters["Tag"]);
                    Console.WriteLine("Remaining runtime ".ToUpper() + context.RemainingTime.Minutes + @" minutes  and" + context.RemainingTime.Seconds + @"seconds");
                }
scala cucumber sbt testng cucumber-jvm
1个回答
0
投票

我不确定你到底想做什么。

如果您想以编程方式运行 Cucumber 并且并不真正关心您使用的框架,那么使用 JUnit 5 中的 JUnit Platform Launcher API 并不是一个坏选择。

您可以添加

io.cucumber:cucumber-junit-platform-engine
作为依赖项,然后通过 JUnit 平台 API 执行 Cucumber。

https://github.com/cucumber/cucumber-jvm/tree/main/cucumber-junit-platform-engine

public class RunCucumber {

   public static void main(String[] args) {

      LauncherDiscoveryRequest request = request()
              .selectors(
                      selectDirectory("path/to/features")
              )
              .build();

      Launcher launcher = LauncherFactory.create();
      SummaryGeneratingListener listener = new SummaryGeneratingListener();
      launcher.registerTestExecutionListeners(listener);
      launcher.execute(request);

      TestExecutionSummary summary = listener.getSummary();
      // Do something with summary

   }

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