我正在尝试以下代码:
public class ShashiTest {
@Test
public void test1(){
System.out.println("1===========");
}
@Test(dependsOnMethods="test1")
public void test2(){
System.out.println("2===========");
}
@Test(dependsOnMethods="test2")
public void test3(){
System.out.println("3===========");
}
@AfterMethod(dependsOnMethods={"test2","test3"})
public void test4(){
System.out.println("4===========");
}
}
我期待输出为:
1===========
2===========
4===========
3===========
4===========
但我得到异常的测试方法没有找到:
com.ShashiTest.test4() is depending on method public void com.ShashiTest.test2(), which is not annotated with @Test or not included.
at org.testng.internal.MethodHelper.findDependedUponMethods(MethodHelper.java:111)
我在哪里犯了错误?我如何才能实现我的目标?
回答有点晚,但我今天刚刚遇到了这个问题。错误:com.expedia.FlightBooking.tearDown()取决于方法public valcom.expedia.FlightBooking.flightBooking(),该方法未使用@Test注释或不包含。
解决方案:将dependsOnMethods更改为dependsOnGroups Ex:@AfterTest(dependsOnGroups={“flightBooking”})解决了我的问题。
dependsOnMethod
不是这样工作的,只是用来在它们之间排序方法。javadoc足够清晰,IMO:
此方法所依赖的方法列表。无法保证所依赖的方法的运行顺序,但可以保证在运行包含此注释的测试方法之前,将运行所有这些方法。此外,如果这些方法中的任何一种都不成功,则此测试方法将不会运行,并将标记为跳过。如果其中一些方法已重载,则将运行所有重载版本。
但是这个例外不应该发生,所以我为它打开了一个问题。
关于您仅为特定方法运行@AfterMethod
的需求(看起来很奇怪,但为什么不呢),您可以执行以下操作:
public class ShashiTest {
@Test
public void test1(){
System.out.println("1===========");
}
@Test(dependsOnMethods="test1")
public void test2(){
System.out.println("2===========");
}
@Test(dependsOnMethods="test2")
public void test3(){
System.out.println("3===========");
}
@AfterMethod
public void test4(Method m){
switch(m.getName()) {
case "test2":
case "test3":
System.out.println("4===========");
}
}
}
应按预期工作。
@AfterMethod声明此方法在每个带有@Test注释的方法之后运行。现在,您与在test1()之后和test2()之前调用test4()有冲突,同时还要求它在test2()之后运行。请参阅此以进行更深入的讨论。
编辑:我可能应该让呼叫顺序更清楚。
test1()->test4()
test2()->test4()
test3()->test4()
如您所见,要求test4()在test2()和test3()之后运行与要求在每个方法之后调用它的@AfterMethod注释相冲突。
本文向大家介绍特定测试方法的执行如何依赖于TestNG中的其他测试方法?,包括了特定测试方法的执行如何依赖于TestNG中的其他测试方法?的使用技巧和注意事项,需要的朋友参考一下 可以在dependsOnMethods helper属性的帮助下,使特定测试方法的执行依赖于另一个测试方法。 示例 在Java类文件中,只有在该方法成功运行后,才会执行verifyLoan()方法。但是方法独立运行,而无
我正在使用TestNG和注释-“依赖方法” 代码示例: 现在,需要以编程方式获取触发其他测试方法(Test2)的测试方法(Test1)的名称。 ******************更新了上下文 我正在Maven项目中运行TestNg、java、extent reports 4.0.9、selenium测试。 CURRENT:测试[addAndPopulateTest],它使用TestNg-“依赖方
请帮我解决这个问题。
我正在尝试使用https://github.com/bright/slf4android中的slf4android依赖项,但gradle同步有问题。 Build.Gardle(项目) Build.Gardle(应用程序)
尝试部署 Web 应用程序时,由于日志记录错误(如下所示),它将失败: Java . lang . nosuchmethoderror:org . SLF 4j . SPI . locationawarelogger . log(Lorg/SLF 4j/Marker;ljava/lang/String;il Java/lang/String;ljava/lang/Throwable;) 我已经谷歌
我正在尝试使用maven和java设计一个应用程序。它的一部分连接到MySQL数据库。为此,我使用了< code > class . forname(" com . MySQL . JDBC . driver ");。我还将< code>mysql-connector-java '依赖项添加到我的pom.xml中。但是,当我运行mvn test connection = driver manage