Java单元测试,从循环中的断言中获取更多数据

时间:2016-03-01 17:59:56

标签: java unit-testing assertions

我正在对返回数百种产品的网络服务进行单元测试。 在我今天的测试中,其中一个产品缺少一个领域。

因为一个产品缺少一个字段我的断言失败(成功找到错误,所以这取决于你如何看待它),但我想知道的是哪个产品是有问题的产品。

这是我的断言代码:

for (Catalog catalog : mCatalogs.catalogs) {
    if (catalog.products != null && !catalog.products.isEmpty())
    {
        for (Product product : catalog.products) {
            assertNotNull(product.sku);
            assertNotNull(product.title);
            assertNotNull(product.localeName);
            assertNotNull(product.description);
            assertNotNull(product.fullImage);
            assertNotNull(product.statusCode);
        }
    }
}

其中一个产品没有字段localName

有没有办法向命令行输出一个类似

的字符串

"product " + product.title + " failed"

若然,怎么样?

谢谢!

3 个答案:

答案 0 :(得分:0)

每个assert *方法都有一个版本,它将String作为第一个参数,即断言失败时显示的字符串。

assertNotNull("product " + product.title + " failed",product.localeName);

答案 1 :(得分:0)

通常,在JUnit中进行断言的调用会被重载,以便在出现故障时创建错误消息。在这种情况下,请调用the overload of assertNotNull that takes 2 parameters,第一个是错误消息。

assertNotNull("product " + product.title + " failed", product.localeName);

答案 2 :(得分:0)

您可以使用assert运算符执行此类操作:

assert product.localeName != null : "product must have a local name";