当前位置: 首页 > 知识库问答 >
问题:

无法通过Testrunner类作为Intellij中的TestNG测试运行Cucumber方案

林浩漫
2023-03-14

我想通过TestRunner类运行一个基本cucumber特性文件作为TestNG测试,以促进Intellij中cucumber TestNG的集成。

请注意,我能够成功地将cucumber场景作为cucumberjava测试运行。

但是当尝试通过testrunner类扩展AbstractTestNGCucumberTests通过cucumber testNG集成运行相同的功能文件场景时,会发生以下情况:

>

  • 未执行功能文件中提到的任何场景

    浏览器根本无法启动。

    控制台窗口显示测试通过,如下所示

    为了作为testNG测试运行,我在Intellij中尝试了两种运行配置,首先运行TestRunner类本身,为此我转到了运行配置-在testNG下添加了一个模板,并确保了以下内容:

    测试类型:类,类:指向TestRunner类,VM选项:-ea-Dtestng.dtd.http=true,工作目录:$MODULE_WORKING_DIR$。

    第二个尝试运行TestNG。运行配置窗口中的xml文件:Test-Kind:Suite,Class:指向项目目录中的testngXML文件,VM-options:-ea-Dtestng。dtd。http=true,工作目录:$MODULE\u Working\u DIR$。

    注意:-尝试运行testNG时,在运行配置中收到错误警告“无法解析testNG.xml”。如果有人能告诉我缺少什么,我将不胜感激。。

    [在此输入图片描述][1]

    我的POM。xml具有以下依赖关系:

         <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>6.8.1</version>
        </dependency>
    
    
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>6.8.1</version>
            <scope>test</scope>
        </dependency>
    
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>6.8.1</version>
        </dependency>
    
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.6</version>
            <scope>provided</scope>
        </dependency>
    
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>6.8.1</version>
        </dependency> 
    

    TestRunner类是:

    import io.cucumber.testng.TestNGCucumberRunner;
    import io.cucumber.testng.CucumberOptions;
    import io.cucumber.testng.AbstractTestNGCucumberTests;
    import io.cucumber.testng.FeatureWrapper;
    import io.cucumber.testng.CucumberOptions;
    import io.cucumber.testng.PickleWrapper;
    
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    
    //@RunWith( ExtendedCucumber.class)
    @CucumberOptions(
            features = "classpath:Features",
            glue={"com/cucumber/Projects/StepDefinitions"},
            tags="@Type1",
            dryRun=true,
            monochrome=true,
            /*plugin =  {"html:target/cucumber-html-report",
                    "json:target/cucumber.json", "pretty:target/cucumber-pretty.txt" ,
                    "com.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/RunResults.html"},*/
            plugin =  {"html:target/cucumber-html-report","json:target/cucumber.json","pretty:target/cucumber-pretty.txt"},
            strict = true)
    
    
    public class TestRunner extends AbstractTestNGCucumberTests {
    
    
        private TestNGCucumberRunner testNGCucumberRunner;
    
    
        @BeforeClass( alwaysRun = true )
        public void setUpClass()  {
            testNGCucumberRunner = new TestNGCucumberRunner( this.getClass() );
        }
    
        @Test( groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features" )
        public void feature( PickleWrapper pickleWrapper,FeatureWrapper cucumberFeature ) {
            testNGCucumberRunner.runScenario( pickleWrapper.getPickle());
        }
    
        @DataProvider
        public Object[][] features() {
            return testNGCucumberRunner.provideScenarios();
        }
    
        @AfterClass( alwaysRun = true )
        public void tearDownClass()  {
            testNGCucumberRunner.finish();
        }
    }
    
    

    TestNGxml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
    <suite name="Suite" parallel="instances" thread-count="3">
        <test name="testRunner">
            <classes>
                <class name="com.cucumber.Projects.TestRunner.TestRunner"/>
            </classes>
        </test>
    </suite>
    

    控制台窗口输出:

    ===============================================
    Default Suite
    Total tests run: 1, Failures: 0, Skips: 0
    =============================================== ```
    
    
    Process finished with exit code 0 *
    
    
      [1]: https://i.stack.imgur.com/iDBdR.png
    
  • 共有1个答案

    赫连照
    2023-03-14

    我不认为你可以同时合并TestNG和Cucumber。在一个项目中,您可以同时开发它们,甚至可以单独运行它们,但不能同时执行它们。

     类似资料:
    • 我试图使用TestNG和SpringBootTest并行运行两个Cucumber测试,但当我的测试执行时,会发生以下情况 两个浏览器都打开并导航到维基百科主页 1个浏览器继续测试,另一个留在主页上 1个测试通过,另一个测试失败 我不知道为什么一个测试会停止执行,欢迎任何帮助。 回购:https://github.com/cmccarthyIrl/spring-cucumber-testng-par

    • 我试图通过testng运行简单的Cucumber/Java测试。xml。 所以,我有testng。xml: 我用的是runner。类,在其中我将路径/选项/etc设置为功能文件、步骤和报告: 但是当我运行testng时。xml作为TestNG套件,它: 1) 通过我自己的设想, 但是 我做错了什么?

    • 我正在使用TestNG运行自动Selenium测试。当我作为TestNG套件运行时,一切都很好。但是当我作为Maven Test运行时,它们失败了。我非常困惑为什么他们会在一种情况下工作而不是另一种情况下。以下是测试的总体布局: base.java testbase.java

    • 它在Jenkins slave上工作得很好,但我想为SOAPUI测试用例添加另一个Jenkins slave。但是相同的windows批处理命令在新机器上不起作用。 我在机器上的Jenkins控制台输出中得到以下消息: 我需要在那台机器上设置什么才能使它工作吗? 最后一次编辑:在我们公司,我们有有限的用户帐户。所以我不得不把这个任务交给管理员。他在奴隶身上设置了一些东西,现在对两个奴隶都起同样的作

    • 我有一个使用testng API动态创建testng.xml文件的项目,因此使用java的main函数,我的项目按预期工作,但是如果我使用'run as->maven build'通过maven运行我的项目,看起来只有BeforeSuite和BeforeTest类在运行,而实际的测试并没有运行。以下是我的pom.xml文件: 最后,这是StackTrace: 我想知道我错过了什么。

    • 我有一个带有TestNG的maven项目。我以前使用Eclipse,今天搬到了IntelliJ,我认为我配置正确。但是当我在IntelliJ中运行这个项目时,它不能在下面的错误信息下运行。当使用maven命令运行时,它没有任何问题。 但是当我从IntelliJ跑过来时,我得到: @w@C:\用户\sdymj\AppData\本地\Temp\idea_working_dirs_testng.tmp-