[英]How to run differents tests from one single method with junit
我有一個測試,執行一個循環來運行相同的測試,但是輸入不同。 問題在於,當一個斷言失敗時,測試將停止,並且將其標記為好像一個測試失敗。
這是代碼:
@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作為兩個不同的測試執行,但是在它們內部,我執行了一個循環來檢查集合返回的每個項目中的某些內容。 但是我想要對每個項目進行該測試,以將其視為不同的項目,這樣,如果一項失敗,則其他項繼續執行,我可以看到總項中哪一項失敗,有多少失敗。
您描述的是參數化測試。 有很多可以幫助您的框架。 它們只是簡單的功率比不同。 只需選擇一個適合您的需求即可。
junit的本機方式是@Parameterized,但是它很冗長。 您可能會發現有用的其他junit插件是zohhak或junit-dataprovider 。 如果您沒有被強制使用junit和/或純java,則可以嘗試使用spock或testng 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.