2015-11-03 105 views
1

我有一個測試,它執行一個循環來運行相同的測試,但使用不同的輸入。問題是當一個斷言失敗時,測試停止,並且標記爲一個測試失敗。如何使用junit從單一方法運行differents測試

下面是代碼:

@Test 
public void test1() throws JsonProcessingException { 
    this.bookingsTest(Product.ONE); 
} 

@Test 
public void test2() throws JsonProcessingException { 
    this.bookingsTest(Product.TWO); 
} 

public <B extends Sale> void bookingsTest(Product product) { 

    List<Booking> bookings = this.prodConnector.getBookings(product, 100); 

    bookings.stream().map(Booking::getBookingId).forEach((bookingId) -> { 
     this.bookingTest(bookingId); 
    }); 
} 

public <B extends Sale> void bookingTest(String bookingId) { 
    ... 
    // Do some assert: 
    Assert.assertEquals("XXX", "XXX"); 
} 

在這種情況下,該方法TEST1和TEST2,執行兩個不同的測試,但在他們裏面,我做一個循環來檢查返回的每一個項目的一些東西由收藏。但是我想要的是將每個項目的測試視爲一個不同的項目,以便在其中一個項目失敗時,其他項目繼續執行,並且我可以看到哪個項目失敗以及總共失敗多少項目。

+3

您可能想看看參數化測試 –

回答

1

你所描述的是參數化測試。有很多框架可以幫助你。他們只是有不同的簡單功率比。只需選擇適合您需求的產品即可。

junit的原生方式是@Parameterized但它非常冗長。其他可能有用的junit插件是zohhakjunit-dataprovider。如果您沒有強制使用junit和/或純java,則可以嘗試spocktestng

+0

謝謝!我正在用@Parametrized去,不知道這一點 –

相關問題