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

在以编程方式运行testNG测试时使用aspectJweaver

通令
2023-03-14

我使用java类从excel文件动态生成testNG xml。我使用allure-cli在测试执行结束时生成allure报告。

我正在使用maven-surefire插件进行以下配置。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <configuration>

                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

当测试由maven目标和阶段触发时,我能够生成包含完整日志和屏幕截图的诱惑力报告,这些日志和屏幕截图由诱惑力注释(@step、@attachments、@Story…)附加。

但是,当java类(生成testNG xml)触发测试时,我无法获得相同的报告

public static  void runTestNGTests(Map<Integer,List<String>> testMap){

         TestNG myTestNG = new TestNG();     
         XmlSuite mySuite = new XmlSuite();
         mySuite.setName(suiteName);        


         List<XmlTest> myTests = new ArrayList<XmlTest>();

         for(Map.Entry<Integer, List<String>> map : testMap.entrySet()){


             XmlTest myTest = new XmlTest(mySuite);

             myTest.setName(map.getKey()+".) web Test : "+map.getValue().get(0) + " on "+ map.getValue().get(1));        
             myTest.addParameter("Date", map.getValue().get(0));
             myTest.setXmlClasses(Arrays.asList(new XmlClass("com.bravura.tests."+map.getValue().get(1))));

             myTests.add(myTest);
         }



         mySuite.setTests(myTests);

         List<XmlSuite> mySuites = new ArrayList<XmlSuite>();
         mySuites.add(mySuite);

            myTestNG.setXmlSuites(mySuites);
             myTestNG.run(); 
    }
}

我必须在我的testNG.xml中包含javaagent:“${settings.localRepository}/org/aspectj/apectjweaver/${aspectj.version}/apectJweaver-${aspctj.version}.jar才能在allure报告中获得正确的测试体日志吗?

共有1个答案

夏飞掣
2023-03-14
mySuite.addListener("path.to.your.listener");

此解决方案为您提供不带步骤的报告。找不到收集步骤的解决方案。

 类似资料:
  • 我想用TestNG以编程方式运行测试套件。 我创建了测试结构:XmlSuite- 我在做三件事: 使用addParameter(String,String)向XmlTest添加参数 但在测试执行时发生的事情是,当它转到@test method时,对象没有我之前设置的东西。 代码 结果:

  • 我创建了一个应该创建和执行testng xml文件的类。 这将生成下一个XML文件: 执行时不执行测试用例。总测试运行:0,失败:0,跳过:0 如果我将XML作为TestNG套件运行,它就会正常工作。 值得注意的是,当手动运行它时,在控制台中我在执行测试之前: 但在执行开始前使用上面的类运行时: 但这可能是因为使用了CMD。 测试: testng版本:6.14.3 谢谢 更新 我添加了详细级别,我

  • 问题内容: 如何在“ PHP内”运行测试,而不是使用“ phpunit”命令?例: 还是我必须将测试写入文件,通过system()/ exec()调用phpunit并解析输出?:( 问题答案: 只需使用随附的驱动程序即可。 然后,您需要像SeleniumTestCase一样进行设置: 然后:

  • 我希望在一个普通的maven quickstart项目中运行TestNG,而不使用“TestNG eclipse插件”。 无论我从http://testng.org/doc/documentation-main.html#running-testng-programmily和其他来源中读到什么,我都知道如何使用类: messageUtil.java testngexample.java app.j

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

  • 我试图创建一起使用JBehave和TestNG的概念验证。我想做的是在多个线程中同时运行一个故事,以测试我的代码的线程安全性。 我有一个简单的类,它只做一件事,在给定的整数值上计算模7。我已经为这个类创建了一个简单的BDD测试。我已经按照JBehave“入门”文档中的描述设置了BDD测试。唯一的区别是,在我的JUnitStory文件中,我没有使用JUnit的@Test注释,而是使用了TestNG的