TestNG是一个测试框架,专注于提供Java编程语言中的单元和功能测试功能。它支持并行测试,数据提供程序,依赖项,组和其他功能。
默认情况下,Maven如何跳过我的所有测试?我的POM.xml很少,我无法通过它们进行测试。我的个人资料看起来像 Maven默认情况下会跳过我的所有测试?我的个人资料之一看起来像 pom.xml 如果我运行<profile> <id>jsf-test</id> <dependencies> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-remote</artifactId> <version>${jboss.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.jsf.tests</groupId> <artifactId>jsf-app</artifactId> <version>${jsf-app.version}</version> <type>war</type> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>copy-jsf-app</id> <phase>validate</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>com.jsf.tests</groupId> <artifactId>jsf-app</artifactId> <version>${jsf-app.version}</version> <type>war</type> <destFileName>jsfapp.war</destFileName> <outputDirectory>target</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire.version}</version> <configuration> <skipTests>false</skipTests> <!-- desperate trial --> <properties> <property> <name>listener</name> <value>${testng.listeners}</value> </property> </properties> </configuration> </plugin> </plugins> </build> </profile> 然后编译了项目,则正确复制了trifact,并跳过了测试。 mvn verify -Pjsf-test具有相同的结果。我正在使用jsf-app和mvn verify -Dtest=TestCalculator执行实际测试,但我不确定这对这个问题是否重要。 eDit 在调试中进行的互动将提供(相关部分) Arquillian 我最简单的测试看起来像 TestNG 调试输出显示以下内容: [DEBUG] (s) reportFormat = brief [DEBUG] (s) reportsDirectory = /home/pmensik/Work/workspace/epp-test/cdi-arquillian- test/target/surefire-reports [DEBUG] (f) reuseForks = true [DEBUG] (s) runOrder = filesystem [DEBUG] (s) skip = true [DEBUG] (s) skipTests = false [DEBUG] (s) systemPropertyVariables = {jsfPortlet=true} [DEBUG] (s) testClassesDirectory = /home/pmensik/Work/workspace/epp-test/cdi-arquillian-test/target/test-classes [DEBUG] (s) testFailureIgnore = false [DEBUG] (s) testNGArtifactName = org.testng:testng [DEBUG] (s) testSourceDirectory = /home/pmensik/Work/workspace/epp-test /cdi-arquillian-test/src/test/java [DEBUG] (s) trimStackTrace = true [DEBUG] (s) useFile = true [DEBUG] (s) useManifestOnlyJar = true [DEBUG] (s) useSystemClassLoader = true [DEBUG] (s) useUnlimitedThreads = false [DEBUG] (s) workingDirectory = /home/pmensik/Work/workspace/epp-test/cdi-arquillian-test [DEBUG] (s) project = MavenProject: org.jboss.gatein.test:cdi-portlet-test:6.1-ER01 @ /home/pmensik/Work/workspace/epp-test/cdi-arquillian-test/pom.xml [DEBUG] (s) session = org.apache.maven.execution.MavenSession@3c3483ec [DEBUG] -- end configuration -- [INFO] Tests are skipped. 不仅跳过了测试,还会跳过complings。 如果您很好奇,请检查父pom(由Arquillian引入的任何公司POM直接引用,也是Arquillian引入的任何公司POM或Super Poms),以查看设置该标志的位置。 修复是添加 public class Test { @Drone protected WebDriver driver; @Deployment(testable = false) public static WebArchive createTestArchive() { return ShrinkWrap.createFromZipFile(WebArchive.class, new File("target/CDIPortlet.war")); } @Test public void testCase{ //... } } 在此模块中的SureFire插件配置或添加 [DEBUG] (s) skip = true to to your命令行。 Reference 如果您在Intellij中遇到此问题,请尝试从设置中取消选中的“ skiptests” - >构建,执行,部署 - > maven->runner
public class BaseTest { public WebDriver driver; @BeforeMethod public void setup( driver = new FireFoxDriver(); } @AfterMethod public void teardown() { driver.quit(); } }
如何在jenkins中配置并行测试执行,以用于大型Java应用程序? 我管理的是一个越来越大的Java应用程序。当我有一个测试套件时,我有一个简单的配置
i懒惰的线程计数为10,因为那是我硬件上的内核数量,并假设詹金斯服务器可能会超过此。 但是随着时间的流逝,我有其他几个人/团队添加了测试套件,并且已经长到12个测试套件。 我使用Jenkins的并行关键字执行这些测试套件。但是,我很好奇所有这些套件是否可以并行执行,而所有这些套件也可以访问10个线程。 没有任何错误,但后来未能执行几个或几个测试套件。这是我看到的。 [2025-02-14T16:43:58.954Z] [INFO] [2025-02-14T16:43:58.954Z] [INFO] --- surefire:2.22.2:test (default-test) @ my-tests --- [2025-02-14T16:43:58.954Z] [INFO] [2025-02-14T16:43:58.954Z] [INFO] ------------------------------------------------------- [2025-02-14T16:43:58.954Z] [INFO] T E S T S [2025-02-14T16:43:58.954Z] [INFO] ------------------------------------------------------- [2025-02-14T16:43:58.954Z] Killed 使用JDK17,Maven3.6.1 看起来像您的JVM中的一个一样,因为它退出了。 如果您的测试引发了一个异常,则称为System.EXIT,或者JVM只是崩溃,这些可能是测试套件可能无法运行的原因。 https://maven.apache.org/surefire/maven-surefire-plugin/examples/shutdown.html 它的怪异“杀死”是写在游戏机上的全部。 我希望Surefire或Maven有更多有关JVM被杀死的反馈。 有人可以写一项正在做不应该做某事的测试吗?
在运行时从Jenkins参数构建到testng.xml的数据
<parameter name="firstName" value="John"/> 我希望能够将数据输入暴露给非技术人员,并建议通过使用参数化的Jenkins作业来实现此目的。 所有测试数据都是字符串。 我可以看到如何在jenkins中创建一个参数化的项目,并可以在项目中创建字符串参数。 我不清楚在运行时传递数据的最佳方法。 我知道可以使用一个蚂蚁脚本,但是我已经使用了Maven,并且不想引入另一种冲突的技术。 我已经听说这可以使用testng.xml中的beanshell脚本完成,但是从 -Testngdocs上的示例中,我仍然不清楚如何最好地实现它。 在这里您可以解决这个问题。 添加您要通过jenkins传递的所有参数进入套件XML文件并为其定义一些默认值。 在詹金斯(Jenkins)作业中,您现在创建参数,但请确保您的作业配置中的参数名称与您在Suite XML文件中添加的名称匹配。 然后,您使用testng侦听器,如下所示,然后使用其中一种详细介绍的方法将其连接到我的博客文章中。 之后,您应该能够轻松地完成所需的工作。如果您的参数定义为<test>级别,则可以增强我在下面显示的侦听器,并在实现org.testng.ITestListener侦听器后添加类似的代码。 listener public class EnvReaderListener implements ISuiteListener { @Override public void onStart(ISuite suite) { Map<String, String> parameters = suite.getXmlSuite().getParameters(); for (Map.Entry<String, String> parameter : parameters.entrySet()) { String env = System.getenv(parameter.getKey()); if (env != null && ! env.trim().isEmpty()) { parameter.setValue(env); } } } @Override public void onFinish(ISuite suite) { } } 测试套件xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="My Suite" parallel="methods" verbose="2"> <listeners> <listener class-name="org.rationale.emotions.EnvReaderListener"/> </listeners> <parameter name="name" value="Sample name"/> <test name="My Test" verbose="2"> <classes> <class name="org.rationale.emotions.SampleTest"/> </classes> </test> </suite> 在此示例中,您需要确保您的作业将具有名为name的参数。 样本测试类 package org.rationale.emotions; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class SampleTest { @Test @Parameters ("name") public void testMethod(String name) { System.err.println("Name that was passed in via Jenkins job " + name); } } 您可能会在项目中使用启用MAVEN Resources插件目标copy-resources启用了模板文件中的变量。 示例: filters 在您的情况下与詹金斯一起使用此案件: 改变您的testng.xml-> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>path_to_output_folder/output</outputDirectory> <resources> <resource> <directory>path_to_resource_dir/res</directory> <!--source to your testng.xml--> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> call maven目标<parameter name="firstName" value="${firstname}"/>其中($ firstName)是jenkins变量。
我现在遇到的问题是,如果某人想使用我的测试,他们必须在Eclipse中导入项目,重新链接Java 8库,在Eclipse上安装testng,将硒罐添加到项目中,并最终创建testng配置并最终使用选定的XML运行。 我想知道是否有可能将简单的变换项目转换为我将通过命令行调用的JAR文件,类似:
使用Browserstack SDK,我想在浏览器上运行Java Selenium测试:Chrome,Edge和Safari在Browserstack Cloud中;但是,我需要设置浏览器特定功能: 例如, Chromeo ...
我正在自动化一个网页,在课堂上我有几个测试,当我通过 testng 运行它们时,所有这些测试都不会被调用@Aftertest,所以唯一有效的测试是第一个,因为
在 Java/Selenium 中向列表中添加元素时出现 NullPointerException
拉胡尔谢蒂学院 我想将元素(蔬菜/水果名称)添加到列表中,并想通过单击“下一步”按钮来打印列表,但我收到错误:java.lang.NullPointerExceptio...
我正在使用 Selenium 框架来执行测试用例。 我需要一份在当前执行完整套件时通过的测试用例的即时报告。 例如:有 100 个测试用例...
我对自动化有一个问题。并不是说我不同意这绝对是测试应用程序的最佳方法,但从某种意义上说,实现稳定性是非常困难的。怎么...
如何将信息传递给 TestNG IAnnotationTrasformer?
我刚刚发现,一旦测试启动,甚至在执行第一个测试之前,就会执行带有 IAnnotationTransformer 注释的侦听器的实现。 背景:...
`尝试执行 maven 项目时出现 NoClassDefFoundError 原因:java.lang.ClassNotFoundException。创建 TestNG 文件并添加类。 我们需要添加配置吗?同样的c...