2014-05-09 65 views
0

我有一個類計算值,其實現了兩個方法添加(INT A,INT b)和DIV(INT A,INT b)和一個測試類這個類的:TestNG的 「基團」 的測試失敗

import org.testng.Assert; 
import org.testng.annotations.AfterClass; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 


public class CalcTest { 
Calc c; 

@BeforeClass 
public void init() { 
    c = new Calc(); 
} 

@Test(groups = "t1") 
public void addTest() { 
    System.out.println("Testing add() method"); 
    Assert.assertEquals(c.add(10, 5), 15); 
} 

@Test 
public void divTest() { 
    System.out.println("Testing div() method"); 
    Assert.assertEquals(c.div(10, 5), 2, 0); 
} 

@AfterClass 
public void free() { 
    c = null; 
} 

} 

和我有一個testing.xml文件適合測試:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="first tests"> 
    <test name="first test"> 
     <groups> 
      <run> 
       <include name="t1" /> 
      </run> 
     </groups> 
     <classes> 
      <class name="CalcTest" /> 
     </classes> 
    </test> 
</suite> 

我剛在TestNG的羣體先看看,所以我想嘗試一下,我butif運行testing.xml文件我得到的NullPointerException在線:

Assert.assertEquals(c.add(10, 5), 15); 

如果我從測試方法中刪除「組」註釋,它可以正常工作,謝謝

+0

如果在init()之前放置'@ BeforeGroups'註釋會怎樣? –

+0

沒什麼,它是一樣的.. –

回答

0

您需要在組中註明@BeforeClass註釋。將(groups =「t1」)添加到您的beforeclass註釋中。

0

漂亮的解決方案,因爲可能有更多的羣體在未來將是:

@BeforeClass(alwaysRun = true) 
public void init() { 
    c = new Calc(); 
} 

這將導致你的BeforeClass始終運行,無論你正在運行的組。

相關問題