2016-02-11 22 views
0

我想設置TestNG,以便它爲每個測試(基本類似於JUnit)提供了我的類變量的新實例。我需要這個,因爲我打算在方法級別並行化我的測試。我一直在嘗試使用獨立的Guice和TestNG提供的內置Guice功能來嘗試實現這一點,但我沒有運氣。我知道我可以使用ThreadLocal,但在測試中爲每個變量調用.get()都很不吸引人。我厭倦了使用GuiceBerry,因爲它沒有太多的更新/活動,它的最後一個版本甚至都沒有通過Maven獲得。我非常喜歡TestNG,因爲這給我帶來了不便,但它仍然有很多很棒的功能。儘管爲了實現我的目標,我仍然樂於接受其他工具。基本上我想要設置的東西,所以下面的測試將持續工作。任何幫助將不勝感激。讓TestNG像Guice一樣對待類變量像JUnit

// just has a variable thats a class called child with a simple string variable 
// with a value of "original 
Parent p; 

@Test 
public void sometest1(){ 
    p.child.value = "Altered"; 
    Assert.assertTrue(p.child.value.equals("Altered")); 

} 

@Test 
public void sometest2(){ 
    Assert.assertTrue(p.child.value.equals("original")); 
} 
+0

'@ BeforeMethod'? – fge

+0

Before方法不能解決問題,它只會改變變量的類實例。在那裏創建的任何變量都不會持續到測試中 – adambsg

+0

還有'@ BeforeClass' ... – fge

回答

0

TestNG不會爲每個測試創建一個新實例。如果你想要這樣的行爲,我建議創建單獨的測試類。例如: -

public class SomeTest1 { 
    Parent p; 

    @Test 
    public void something(){ 
     p.child.value = "Altered"; 
     Assert.assertTrue(p.child.value.equals("Altered")); 
    } 
} 

public class SomeTest2 { 
    Parent p; 

    @Test 
    public void something(){ 
     Assert.assertTrue(p.child.value.equals("original")); 
    } 
} 

注意TestNG can run JUnit 3 and JUnit 4 tests(你可能會維持取決於你想要在一個給定的測試類使用的樣式的混合套件)。

相關問題