2010-09-30 69 views
2

我正在編寫一個測試用例,我想爲一個測試用例運行一個DataPoint,爲第二個測試用例運行第二個DataPoint。JUnit理論問題

@RunWith(Theories.class) 
public class DummyTest { 

    @DataPoints 
    public static String[] getFileNames() { 
     return new String[] { "firstFile.txt","firstFile1.txt" }; 
    } 

    @Theory 
    public void test1(String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

    @DataPoints 
    public static String[] getSecondFileNames() { 
     return new String[] { "secondFile.txt","secondFile1.txt" }; 
    } 

    @Theory 
    public void test2(String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

} 

我想,對於第一次測試的情況下我的第一個數據點,即getFileNames方法被調用和第二個測試案例getSecondFileNames數據點應該叫。任何人都可以建議這是可行的嗎?

謝謝,
謝卡爾

回答

1

測試可以被分組爲「固定裝置」,其中一個夾具是共享相同的設置的一組代碼。將相同數據點的情況下的測試放在同一個類中,因此每個數據集都有一個類。

+0

我在找的是一種將所有測試寫入同一個類的方法。我們可以在一個測試類中定義兩個數據點嗎? – Shekhar 2010-10-01 04:02:33

3

隨着不久,即將舉行的JUnit 4.12的,你現在可以命名組數據點和需要的參數只能從該組來,例如:

@RunWith(Theories.class) 
public class DummyTest { 

    @DataPoints("fileNames1") 
    public static String[] getFileNames() { 
     return new String[] { "firstFile.txt","firstFile1.txt" }; 
    } 

    @Theory 
    public void test1(@FromDataPoints("fileNames1") String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

    @DataPoints("fileNames2") 
    public static String[] getSecondFileNames() { 
     return new String[] { "secondFile.txt","secondFile1.txt" }; 
    } 

    @Theory 
    public void test2(@FromDataPoints("fileNames2") String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

} 

這應該完全解決您的問題:-)。

0

你看過嗎JUnitParams?如果您只是想將參數傳遞給方法,這就是您的示例所展示的全部內容,這是一個更簡潔的選項。

@RunWith(JUnitParamsRunner.class) 
public class DummyTest { 

    public static String[] getFileNames() { 
     return new String[] { "firstFile.txt","firstFile1.txt" }; 
    } 

    @Theory 
    public void test1(String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

    @DataPoints 
    public static String[] getSecondFileNames() { 
     return new String[] { "secondFile.txt","secondFile1.txt" }; 
    } 

    @Theory 
    public void test2(String fileName) throws Exception { 
     System.out.println(fileName); 
     assertThat(true, is(equalTo(Boolean.TRUE))); 
    } 

}