2015-11-03 69 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去,不知道这一点 –

相关问题