創(chuàng)建TESTNG.XML
創(chuàng)建一個(gè)文件 testng.xml 在 C: > TestNG_WORKSPACE 來(lái)執(zhí)行測(cè)試用例
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "
http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<classes>
<class name="DependencyTestUsingAnnotation" />
</classes>
</test>
</suite>
編譯MessageUtil的測(cè)試用例類(lèi)使用javac
C:TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java
現(xiàn)在運(yùn)行 testng.xml 這將會(huì)運(yùn)行 testSalutationMessage() 只有在執(zhí)行 ofinitEnvironmentTest() 方法之后
C:TestNG_WORKSPACE>java -cp "C:TestNG_WORKSPACE" org.testng.TestNG testng.xml
驗(yàn)證輸出
This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
示例,使用屬性dependsOnGroups
也可以依賴(lài)于整個(gè)群組的方法。讓我們來(lái)看看下面的例子:
創(chuàng)建一個(gè)類(lèi)
創(chuàng)建一個(gè)Java類(lèi)進(jìn)行測(cè)試為 MessageUtil.java 在 C: > TestNG_WORKSPACE
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
創(chuàng)建測(cè)試案例類(lèi)
創(chuàng)建一個(gè)Java測(cè)試類(lèi)說(shuō)依賴(lài)TestUsingAnnotation.java.
添加測(cè)試方法 testPrintMessage(), testSalutationMessage() 和 initEnvironmentTest() 測(cè)試類(lèi)和他們的組 "初始化"
添加屬性 dependsOnMethods = { "init.*" } to the @Test 注釋 testSalutationMessage() 方法
創(chuàng)建Java類(lèi)文件名 DependencyTestUsingAnnotation.java 在 C: > TestNG_WORKSPACE
import org.testng.Assert;
import org.testng.annotations.Test;
public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "init" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = "Manisha";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(dependsOnGroups = { "init.*" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "init" })
public void initEnvironmentTest() {
System.out.println("This is initEnvironmentTest");
}
}
在這個(gè)例子中,testSalutationMessage()被聲明為根據(jù)任何一組匹配正則表達(dá)式“的init*”,這保證了,一種方法,testPrintMessage的()和initEnvironmentTest()將始終前testSalutationMessage()被調(diào)用。
如果一個(gè)方法失敗,取決于你有一個(gè)很難依賴(lài)于它(alwaysRun= false,這是默認(rèn)的),沒(méi)有標(biāo)記的方法依賴(lài)于它的失敗,但作為跳過(guò)。跳過(guò)的方法將被報(bào)告為例如在終報(bào)告(在HTML中,既不是紅也不是綠的顏色),這是很重要的,因?yàn)樘^(guò)的方法不一定是失敗。
創(chuàng)建TESTNG.XML
創(chuàng)建一個(gè)文件testng.xml C: > TestNG_WORKSPACE 執(zhí)行測(cè)試案例
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "
http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<classes>
<class name="DependencyTestUsingAnnotation" />
</classes>
</test>
</suite>
編譯MessageUtil的測(cè)試用例類(lèi)使用javac
C:TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java
現(xiàn)在,運(yùn)行testng.xml,這將運(yùn)行testSalutationMessage()方法后,才執(zhí)行initEnvironmentTest()方法。
C:TestNG_WORKSPACE>java -cp "C:TestNG_WORKSPACE" org.testng.TestNG testng.xml
驗(yàn)證輸出
This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
dependsOnGroups Vs dependsOnMethods
在使用組,我們不再面臨重構(gòu)的問(wèn)題。只要我們不修改dependsOnGroups或組屬性,我們的測(cè)試將繼續(xù)運(yùn)行,設(shè)立適當(dāng)?shù)囊蕾?lài)。
每當(dāng)一個(gè)新的方法需要添加依存關(guān)系圖中,我們需要做的是把它正確的組中,并確保它依賴(lài)于正確的組。我們不需要修改任何其他方法。