运行 由于未显示 class 扩展 AbstractTestNGCucumberTests 的 TestNG

Run As TestNG is not shown for class extending AbstractTestNGCucumberTests

请注意,我已经搜索了这个特定问题并找到了几个问题,但其中 none 个场景与黄瓜集成相关。

我有一个测试运行器 class 扩展了 AbstractTestNGCucumberTests。

我还安装了 Eclipse TestNG 插件以及 6.12

还在 运行 配置下的 TestNG 下添加条目,对解决问题没有帮助。

Mac + Eclipse 4.7.0

@CucumberOptions(features={"src/test/resources/WunderlistAndroid.feature"}, strict = false, format = { "pretty","json:target/cucumber.json" }, tags = { "~@ignore" })
    public class WLSignIn extends AbstractTestNGCucumberTests{
    @BeforeClass
        public void launchAppiumServer(){
           //code doing desired action
        }

    @AfterClass
        public void killAppiumServer(){
         //code doing desired action
    }

}

问题是因为 eclipse TestNG 插件在您的 class 中没有看到任何 @Test 方法。我相信该插件本质上是上下文相关的,因此仅当它在您的测试 class 中看到至少一个 @Test 方法时才显示 Run As > TestNG Test。由于 @Test 方法驻留在您的基础 class 中,插件看不到它,因此您也看不到它。

为了解决这个问题,您或许可以添加一个虚拟测试方法,如下所示,它应该会带回 Run as > TestNG test 选项。

@Test(enabled=false)
public void dummyTestMethod() {}

附带说明:您可能希望将此作为问题提交到 TestNG project 中,看看是否值得修复。

可用于错误的详细信息:

如果基础 class 驻留在一个 jar 中(并且有一个或多个 @Test 带注释的测试方法),那么 eclipse testng 插件看不到子 class(WLSignIn) 第一次。但是在向子 class (WLSignIn) 添加禁用的 @Test 方法后,该选项就会出现。无论子 class 是从同一项目中的另一个 class 还是从另一个位于 jar 中的 class 扩展(在您的情况下 cucumber.api.testng.AbstractTestNGCucumberTests