簡體   English   中英

如何使用junit從一種方法運行差異測試

[英]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插件是zohhakjunit-dataprovider 如果您沒有被強制使用junit和/或純java,則可以嘗試使用spocktestng

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM