2015-11-30 113 views
0

我運行這些TestNG測試調用時TestNG的測試用例的優先次序,通過Java main方法(感謝另一個帖子 - how to call testng.xml from java main method?如何從Java main方法

public class MainTest {  //main 
    public static void main(String[] args) { 
    TestListenerAdapter tla = new TestListenerAdapter(); 
    TestNG testng = new TestNG(); 
    List<String> suites = Lists.newArrayList(); 
    suites.add("c:/AbcTests/xyztest.xml"); 
    testng.setTestSuites(suites); 
    testng.run(); 
    } 
} 


public class Test001 { //test 
    @Test(priority=1) 
    public void a1() { 
    System.out.println("In a1 run"); 
    } 
    @Test(priority=2) 
    public void a2() { 
    System.out.println("In a2 run"); 
    } 
    @Test(priority=3) 
    public void b1() { 
    System.out.println("In b1 run"); 
    } 
} 

但是當我運行它,測試隨機挑選。

輸出:

In a2 run 
In a1 run 
In b1 run 

從TestNG的運行時,它是好的。

當從Java main運行時,有沒有一種方法可以優先考慮TestNG中的測試?

-------編輯----------

謝謝tim-slifer。我看了一下這個xml。 它是: -

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Just Test" verbose="3" parallel="methods"> 
    <test name="Smoke"> 
    <classes> 
     <class name="test2.Test001" /> 
    </classes> 
    </test> 
</suite> 

我除去平行= 「方法」。並將其更改爲

<suite name="Just Test" verbose="3"> 

現在工作正常。 我認爲這是錯誤的?這是對的嗎?

+0

你能分享你的主要方法代碼嗎? –

+0

我已經添加了主要方法 – Raj

+0

你可以發佈你的'xy​​ztest.xml'的內容嗎? –

回答

0

繼上您的編輯以確認您(和niharika_neo)的發現。並行屬性是您問題的原因。

我想或者你已經啓用了並行執行,或者你已經包含了測試方法的順序,你希望它們被執行。但是,正如你所做的那樣,通過包含這個類,TestNG將按順序執行這些方法......所以,並行是導致意外結果的原因。