3. TestNG 的靈魂
配置文件(testng.xml)
Junit中要定義測試任務是要寫TestSuit的,居然要寫硬編碼,而TestNG全部寫在testng.xml(名字可以自定義的)中的,然后可以通過ant來調用。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="my suite">
<test name="test1">
<groups>
<run name="group1">
</run>
</groups>
<classes>
<class name="ClassA" />
</classes>
</test>
<test name="test2" >
<groups>
<run name="group2">
</run>
</groups>
<classes>
<class name="ClassB"/>
<class name="ClassC"/>
</classes>
</test>
</suite>
上面包含了配置文件的基本的主干,一個配置文件只有一個Suite,基本上一個項目寫一個配置文件就可以了,當然如果你的項目足夠大,可能需要幾個配置文件。測試是按照從大到小的順序進行的,先執行suite,test,class,其中的group和class是平級的,在講group的時候再詳細的解釋。有了這個文件,我們就可以很清楚的理解@configuration里面的類型
public boolean beforeSuite() default false;
public boolean afterSuite() default false;
public boolean beforeTest() default false;
public boolean afterTest() default false;
public boolean beforeTestClass() default false;
public boolean afterTestClass() default false;
public boolean beforeTestMethod() default false;
public boolean afterTestMethod() default false;
從字面意思可以看出方法的執行順序,唯一的疑惑是執行的次數,官方的文檔的解釋是相當讓人疑惑的,好在我們可以自己測試,beforeTestMethod是當類中任何方法調用都要執行的,beforeTest和beforeTestClass在一個Test中是只執行一次的(沒試過把2個相同的類寫到一個Test里面),而beforeSuite在一個配置文件中只執行一次。上面都沒有考慮分組的情況,分組會更加的復雜,似乎靈活過頭了,但是考慮到項目的復雜性,每個測試方法的初始化都可能不同,現在我們做的項目要求每天要將單元測試寫進daily build的build文件里面自動執行,似乎只有用TestNG這樣靈活的配置才能達到。
4. 分組
將一個測試方法或者配置方法分組是很容易的。
@Configuration(beforeTestClass=true,groups=“group1”)
@Test(groups=”group1”)
只要象上面寫就可以了,名字隨便取,而且不需要預先定義。
我們在一個類做2個組,看看效果
@Configuration(beforeTestClass=true,groups=“group1”)
Public void C1(){}
@Test(groups=”group1”)
Public void T1(){}
@Configuration(beforeTestClass=true,groups=“group2”)
Public void C2(){}
@Test(groups=”group2”)
Public void T2(){}
只選group1
…………………
<groups>
<run name="group1">
</run>
</groups>
…………
執行C1 T1
只選group2
…………………
<groups>
<run name="group2">
</run>
</groups>
…………
執行C2 T2
2個都選
…………………
<groups>
<run name="group1">
<run name="group2">
</run>
</groups>
…………
我最先以為的順序是C1 T1 C2 T2 (A)
然而實際上是 C1 C2 T1 C1 C2 T2 (B)
要想達到(A)的效果,只能把2個group分開了放在不同的Test里面,其實只要知道一點,TestNG是先找Class,然后才去找Group的。
posted on 2005-12-14 14:25
fanta 閱讀(1632)
評論(1) 編輯 收藏 所屬分類:
Java