Tag: testng

如何参数化Maven surefire插件,以便我可以选择运行哪些TestNG套件

我在TestNG中有很多测试套件。 这些是XML文件。 我希望能够在从maven运行集成测试时选择多个XML套件。 目前我可以将套件文件添加到pom.xml,如下所示: org.apache.maven.plugins maven-surefire-plugin ${pathToMySuiteFile_1} ${pathToMySuiteFile_1} 该解决方案有一些限制。 我只能更改我在pom.xml中定义的测试套件的路径。 所以在我的例子中,它总是必须是两个文件。 我不能跑,比方说,5套房或只有一套。 有没有办法以某种方式参数化pom.xml中的整个“suiteXmlFiles”部分? org.apache.maven.plugins maven-surefire-plugin ${multiple_paths_ToMySuiteFiles} 运行与给定测试组匹配的所有内容对我来说不是一个选项:我不想加载我所拥有的所有套件,然后使用TestNG套件中的组运行所选的测试。 原因是在运行具有组filter的所有测试套件之后生成的报告与仅运行所选测试套件时的报告不同。

ChromeDriver和WebDriver for Selenium通过TestNG导致4个错误

我正在做网站所说的,但它导致了4个错误……

如何使用TestNG + JAVA Reflection设置测试方法执行的优先级

我试图在reflection的帮助下执行我的测试脚本,注释为@Test,如下所示: Class className = Class.forName(format); //Load the class name at runtime Constructor customConstructor = className.getConstructor(WebDriver.class); //Create customized constructor and initalize driver from testbase Method[] method = className.getMethods(); //Call the list of methods in current class file for (Method me : method) { if (me.getName().startsWith(“test”)) { //Check wheather the class prefix as test Method getMethods = […]

通过CLI执行testng.xml时出错:无法找到或加载主类org.testng.TestNG

在我进入它之前,我是selenium的新手,等等。 我查找了这个问题的所有答案,仍然无法解决问题。 我的%claspath%等等都是正确的。 jar文件位于正确的文件夹中。 我完全不知道为什么这不起作用。 我的猜测是,我正在做一些愚蠢的事情,专家会很快发现错误。 我能够在Eclipse中运行以下测试,它打开firefox并运行测试没有问题。 如果我从cmd或Jenkins运行测试,我会收到以下错误:错误: 无法找到或加载主类org.testng.TestNG 我用虚拟数据替换了下面的实际信息: selenium类 package package1; import static org.junit.Assert.fail; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class login { private WebDriver driver; private String baseUrl; private boolean acceptNextAlert = true; private StringBuffer verificationErrors = […]

java.lang.LinkageError:ClassCastException

我确实遇到过TestNG和RESTeasy的一个非常烦人的问题。 我有一个类,它针对一个使用RESTeasy框架公开自身的API类运行多个测试。 但是,如果我让测试运行maven(mvn test),那么我得到以下exception: java.lang.LinkageError: ClassCastException: attempting to castjar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.classtojar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.class at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:126) at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:96) at javax.ws.rs.core.Response$ResponseBuilder.newInstance(Response.java:394) at javax.ws.rs.core.Response.status(Response.java:116) at javax.ws.rs.core.Response.status(Response.java:130) at com.pd.api.TokenAPI_V1.validateAccessToken(TokenAPI_V1.java:141) at com.test.pd.api.TokenAPI_V1Test.testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound(TokenAPI_V1Test.java:359) 测试只是调用API obejct的方法,该方法返回一个Response对象(来自RESTeasy)。 作为测试框架,我使用TestNG。 测试方法 @Test public void testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound() throws InvalidAccessTokenException { Mockito.when(tokenService.validateAccessToken(TestConstants.ACCESS_TOKEN)).thenThrow(new InvalidAccessTokenException()); Response response = tokenAPI_v1.validateAccessToken(TestConstants.ACCESS_TOKEN, TestConstants.USER_AGENT); assert “no-store”.equals(response.getMetadata().getFirst(“Cache-Control”)); assert “no-cache”.equals(response.getMetadata().getFirst(“Pragma”)); } 问题说明 看起来RESTeasy框架在不同的类加载器中加载RuntimeDelegate。 如果我看一下源代码,那么在RuntimeDelegate(包括第126行)中有以下方法: RuntimeDelegate.java 。 因此,与错误相关的主要语句是instanceof check: if (!(delegate […]

Junit4和TestNG在Maven的一个项目中

要将它们一起运行,可用的选项很少,但我选择了为Junit和TestNG使用不同的配置文件。 但现在的问题是排除和包括测试用例。 因为如果我们在maven中将testNG依赖项添加到主项目,它将跳过所有Junit,我已经决定将它放在单独的配置文件中。 所以我在默认(主)配置文件中排除TestNG测试,使用pom.xml中的以下条目进行编译: org.apache.maven.plugins maven-compiler-plugin 2.0.2 1.5 1.5 **/tests/**.* **/tests/utils/**.* 和surefire插件相同。 所以它适用于主配置文件并且只执行Junit4测试。 但是当我使用testNG配置文件时,它不会执行testNG测试,即使它不会编译它们。 我正在使用以下配置文件来执行它们。 testNG org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 **/tests/**.java **/tests/utils/**.* org.apache.maven.plugins maven-surefire-plugin false **/**.class **/tests/utils/**.class org.testng testng 5.8 test jdk15 任何人都知道为什么它不包括它们并再次编译?

TestNG + Mockito + PowerMock – verifyStatic()不起作用

我是新的TestNG和一般的unit testing。 我使用的是TestNG 6.9.6和Mockito 1.10.19以及PowerMock 1.6.4。 我想validationMyService类中的myMethod()方法是否在内部使用正确的参数调用静态方法Util.myStaticMethod 。 由于Mockito本身不支持静态方法的validation,因此我使用PowerMock。 我的测试类如下所示: public class MyTest { private MyService myService; @Captor ArgumentCaptor argCaptor; @BeforeMethod public void setup() { MockitoAnnotations.initMocks( this ); myService = new MyService(); } @Test @PrepareForTest(MyService.class) public void myTest() { PowerMockito.mockStatic(Util.class); myService.myMethod(“arg”); PowerMockito.verifyStatic(10); Util.myStaticMethod(anyString()); } } 由于myMethod调用静态方法Util.myStaticMethod()一次,因此预计此测试将失败。 但是当我运行测试时,它总是通过,无论我传递给PowerMockito.verifyStatic()值是什么。 另外,如果我在这个类中编写另一个测试方法然后运行测试,我会收到以下错误 org.mockito.exceptions.misusing.UnfinishedVerificationException: Missing method call for verify(mock) here: […]

TestNG:如何测试强制例外?

我想编写一个TestNG测试来确保在特定条件下抛出exception,如果没有抛出exception,则测试失败。 有没有必要创建一个额外的布尔变量的简单方法? 关于此主题的相关博客文章: http : //konigsberg.blogspot.com/2007/11/testng-and-expectedexceptions-ive.html

有没有办法在testng.xml并行运行两个.xml文件?

我目前有两个不同的TestSuite(SUITE1.XML和SUITE2.xml),配置不同(例如浏览器,Os)…… 我把testng.xml里面的两个SUIT调用在saucelabs上运行……它运行良好……只有我关心的是,我希望这些套件能够并行而不是顺序运行…… 我得到的输出是 [TestNG]正在运行: /Users/muzamilabbasi/Automation/BaublebarTest/Suite1.xml 这是浏览器字符串FIREFOX 这是Platform String WIN8 这是版本字符串25 这是浏览器字符串FIREFOX 这是Platform String WIN8 这是版本字符串25 log4j:WARN没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)。 log4j:WARN请正确初始化log4j系统。 log4j:WARN没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)。 log4j:WARN请正确初始化log4j系统。 页面标题是谷歌 页面标题是谷歌 =============================================== mysuite1 总测试运行:2,失败:0,跳过:0 =============================================== [TestNG]正在运行: /Users/muzamilabbasi/Automation/BaublebarTest/Suite2.xml 这是浏览器字符串FIREFOX 这是Platform String XP 这是Version String 7 这是浏览器字符串FIREFOX 这是Platform String XP 这是Version String 7 页面标题是谷歌 页面标题是谷歌 我搜索过很多网页,而且我得到的答案大部分都是使用我可以实现的ANT {PARALLEL}任务,但是如何? 我需要一个例子..请帮忙。 我正在使用macOS和TESTNG 6.8.6

如何从可执行jar中的main()运行TestNG测试?

我有一个可执行的JAR,它包含所有依赖项和测试类。 我已经确认在执行jar时会调用main()方法。 我正在尝试向main()添加代码,以便我可以运行特定的TestNG测试类。 从TestNG.org上的文档来看,这似乎就是这样做的: TestListenerAdapter tla = new TestListenerAdapter(); TestNG testng = new TestNG(); testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class }); testng.addListener(tla); testng.run(); 我的文件夹结构很典型: /src/main/java/Main.java /src/test/java/com/some/path/tests/MyTests.java 但是,当我尝试编译它时,我收到此错误: java: /src/main/java/Main.java:46: package com.some.path.tests does not exist 无论如何我可以改变我的项目,以便main()中的testng.setTestClasses()可以访问测试类吗?