testng 发生了什么事

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

努力寻找答案

Caused by: java.lang.NullPointerException: Cannot invoke "io.cucumber.testng.TestNGCucumberRunner.provideScenarios()" because "this.testNGCucumberRunner" is null
    at Runner.TestRunner.scenarios(TestRunner.java:36)

FAILED CONFIGURATION: @AfterClass Runner.TestRunner.tearDownClass
java.lang.NullPointerException: Cannot invoke "io.cucumber.testng.TestNGCucumberRunner.finish()" because "this.testNGCucumberRunner" is null
    at Runner.TestRunner.tearDownClass(TestRunner.java:41)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
    at org.testng.

这是我的运行程序文件在过去 10 天中无法执行,使用所有最新的依赖项

@CucumberOptions(
        features="src/test/java/features",
        glue="sr//test//java//steps"
      // plugin={"pretty", "io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm"}
      //  tags="@Amazon"
)
public class TestRunner   {
    
    private TestNGCucumberRunner testNGCucumberRunner;

    @BeforeClass(alwaysRun = true)
    public void setUpClass() {
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }

    @Test(groups = "cucumber", description = "Runs Cucumber Scenarios", dataProvider = "scenarios")
    public void scenario(PickleWrapper pickle, FeatureWrapper cucumberFeature) {
        testNGCucumberRunner.runScenario(pickle.getPickle());
    }

    @DataProvider
    public Object[][] scenarios() {
        return testNGCucumberRunner.provideScenarios();
    }

    @AfterClass(alwaysRun = true)
    public void tearDownClass() {
        testNGCucumberRunner.finish();
    }

}
@DataProvider(@=data)
    public Object[][] scenarios() {
        return testNGCucumberRunner.data();





    }

请提供带有 testng 的 Cucumber 示例工作代码,也尝试过 asbstracttestng ..没有任何效果

testng cucumber-jvm cucumber-java testng-dataprovider
1个回答
0
投票

实际上,您遇到了一些导致“什么都不起作用”的问题。因此解决一个问题并不会立即给你带来有用的东西。

因此,您要考虑的第一个问题是您有 NPE:

java.lang.NullPointerException: Cannot invoke "io.cucumber.testng.TestNGCucumberRunner.finish()" because "this.testNGCucumberRunner" is null
    at Runner.TestRunner.tearDownClass(TestRunner.java:41)

这意味着这里的

testNGCucumberRunner
为空(仔细阅读堆栈跟踪)。

    @AfterClass(alwaysRun = true)
    public void tearDownClass() {
        testNGCucumberRunner.finish();
    }

这意味着它从未被初始化,这意味着

new TestNGCucumberRunner
一定在这里抛出了异常:

    @BeforeClass(alwaysRun = true)
    public void setUpClass() {
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }

您没有提到任何其他异常,但如果您向

tearDownClass
添加空检查,您应该在输出中看到它。这个例外可能会提示您其他问题是什么。

    @AfterClass(alwaysRun = true)
    public void tearDownClass() {
        if (testNGCucumberRunner == null) {
            return;
        }
        testNGCucumberRunner.finish();
    }

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