創(chuàng)建TESTNG.XML
創(chuàng)建一個文件 testng.xml 在 C: > TestNG_WORKSPACE 來執(zhí)行測試用例
<?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的測試用例類使用javac
C:TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java
現(xiàn)在運(yùn)行 testng.xml 這將會運(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
也可以依賴于整個群組的方法。讓我們來看看下面的例子:
創(chuàng)建一個類
創(chuàng)建一個Java類進(jìn)行測試為 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)建測試案例類
創(chuàng)建一個Java測試類說依賴TestUsingAnnotation.java.
添加測試方法 testPrintMessage(), testSalutationMessage() 和 initEnvironmentTest() 測試類和他們的組 "初始化"
添加屬性 dependsOnMethods = { "init.*" } to the @Test 注釋 testSalutationMessage() 方法
創(chuàng)建Java類文件名 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");
}
}
在這個例子中,testSalutationMessage()被聲明為根據(jù)任何一組匹配正則表達(dá)式“的init*”,這保證了,一種方法,testPrintMessage的()和initEnvironmentTest()將始終前testSalutationMessage()被調(diào)用。
如果一個方法失敗,取決于你有一個很難依賴于它(alwaysRun= false,這是默認(rèn)的),沒有標(biāo)記的方法依賴于它的失敗,但作為跳過。跳過的方法將被報告為例如在終報告(在HTML中,既不是紅也不是綠的顏色),這是很重要的,因?yàn)樘^的方法不一定是失敗。
創(chuàng)建TESTNG.XML
創(chuàng)建一個文件testng.xml C: > TestNG_WORKSPACE 執(zhí)行測試案例
<?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的測試用例類使用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)的問題。只要我們不修改dependsOnGroups或組屬性,我們的測試將繼續(xù)運(yùn)行,設(shè)立適當(dāng)?shù)囊蕾嚒?br />
每當(dāng)一個新的方法需要添加依存關(guān)系圖中,我們需要做的是把它正確的組中,并確保它依賴于正確的組。我們不需要修改任何其他方法。