【问题标题】:How to run test using testng by only providing partial class name?如何通过仅提供部分类名来使用 testng 运行测试?
【发布时间】:2020-03-04 19:01:01
【问题描述】:
假设我的java文件名是SeleniumID1Test.java,那么目前我的testng xml文件是这样的
<test name="Selenium Test Name">
<classes>
<class name="selenium.SeleniumID1Test"/>
</classes>
</test>
但我希望它通过部分类名来完成,例如,如果我提供 name=ID1,它会运行 SeleniumID1Test。有什么办法可以吗?请推荐,谢谢。
【问题讨论】:
标签:
java
selenium
testng
testng.xml
【解决方案1】:
我认为像这样使用 group 可以很好地解决您的问题:
import org.testng.Assert;
import org.testng.annotations.Test;
public class GroupTestExample {
String message = ".com";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "functest", "checkintest" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = ".com";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(groups = { "checkintest" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "tutorialspoint" + ".com";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "functest" })
public void testingExitMessage() {
System.out.println("Inside testExitMessage()");
message = "www." + "tutorialspoint"+".com";
Assert.assertEquals(message, messageUtil.exitMessage());
}
}
你的 xml 文件会是这样的:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<run>
<include name = "functest" />
</run>
</groups>
<classes>
<class name = "GroupTestExample" />
</classes>
</test>
</suite>
【解决方案2】:
这是不可能的,但您可以在测试类中包含/排除特定的测试方法:
public class Test1{
@Test
public void test2() {
System.out.println("printing test_2");
}
@Test
public void test3() {
System.out.println("printing test_3");
}
}
XML:
<test name="WebPackage">
<classes>
<class name="test.Test1">
<methods>
<include name="test2"/>
<exclude name="test3"/>
</methods>
</class>
</classes>
</test>