TestNG具有您可以在测试类中以及控制执行的TestNG.xml文件中指定的组。
我的问题是 - 它实际上没有做任何事情。
我以为只要运行该组就可以运行组中的所有类。
它实际上有用吗?
http://testng.org/doc/documentation-main.html#test-groups
我的TestNG.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
<listeners>
<listener class-name="listeners.TestNGCustomReportListener" />
</listeners>
<test thread-count="5" name="firefoxTest">
<parameter name="browser" value="firefox" />
<groups>
<run>
<include name="login" />
</run>
</groups>
</test>
</suite>
我的课程都是这样的前缀:
public class LoginTest extends CrossBrowserTest{
@Test(groups = {"login"})
public void loginTest (){
运行此结果?没有上课:
Total tests run: 0, Failures: 0, Skips: 0
这不符合它的意图吗?
所以我做了一些实验。
我将groups部分放在一个大的testng.xml文件的顶部:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
<listeners>
<listener class-name="listeners.TestNGCustomReportListener" />
</listeners>
<test thread-count="5" name="firefoxTest">
<parameter name="browser" value="firefox" />
<groups>
<run>
<include name="login" />
</run>
</groups>
<classes>
<class name="tests.login.LoginTest" />
<class name="tests.login.AutoLogOutTest" />
<class name="tests.login.AutoLogOutWithRestApiTest" />
<class name="tests.login.ChangePasswordTest" />
<class name="tests.login.SwitchCustomerProjectsTest" />
<class name="tests.login.ForgotPasswordResetTest" />
<class name="tests.login.EditUserNameTest" />
<class name="tests.layers.EnableLayerTest" />
<class name="tests.layers.EnableLayerStyleTest" />
<class name="tests.layers.ChangeLayerNameTest" />
<class name="tests.layers.ChangeStyleNameTest" />
<class name="tests.layers.ChangeStyleColourTest" />
<!-- etc -->
</classes>
</test>
</suite>
这一次,它只运行了所选的组,但它没有这样做,因此没有登录:
@Parameters("browser")
@BeforeTest
public void beforeTest(@Optional("firefox") String browser) {
// compares the value of parameter name with Firefox, if its firefox then it
// will lauch firefox and run the script.
debug.print(thisClass + " CrossBrowserTest.beforeTest." );
initialiseDriver(browser);
loggedInPage = LoginUtility.login(driver);
}
答案 0 :(得分:0)
长话短说,它用于分组。
让我们从testng.xml开始。它使用以下结构:
<suite name="TestNG">
<test name="Nopackage">
<groups>
<run>
<include name="nopackage"/>
</run>
</groups>
<classes>
<class name="NoPackageTest" />
</classes>
</test>
正如您所见,组和类处于同一级别。如果要在组中运行所有测试,则必须指定要调用的类/包和组,例如相交集。
请参阅testng.xml and related class for example
此外,您还有@BeforeGroup
和@AfterGroup
注释,这有助于上下文操作。
我使用组时的主要情况是为每个类管理不同测试方法的不同设置。例如,@BeforeMethod(alwaysRun = true)
正在为类中的所有方法运行,但@BeforeMethod(groups = "my_group")
仅针对标有my_group
的方法运行。
最后一个,现代报告工具支持每组视图,因此您可以将它们用作标记。