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

Java单元测试,从循环中的断言获取更多数据,java,unit-testing,assertions,Java,Unit Testing,Assertions,我正在对返回数百种产品的网络服务进行单元测试。 在我今天的测试中,其中一个产品缺少一个字段 因为一个产品缺少一个字段,所以我的断言失败(成功地找到了错误,所以这取决于您如何看待它),但我想知道的是哪个产品是有问题的产品 以下是我的断言代码: for (Catalog catalog : mCatalogs.catalogs) { if (catalog.products != null && !catalog.products.isEmpty()) {

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

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

以下是我的断言代码:

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”

如果是,怎么做


谢谢大家!

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

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

每个assert*方法都有一个以字符串作为第一个参数的版本,即如果断言失败,则显示的字符串

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

通常,在JUnit中进行断言的调用会被重载,以便在出现故障时可以选择创建错误消息。在本例中,调用,第一个是错误消息

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

通常,在JUnit中进行断言的调用会被重载,以便在出现故障时可以选择创建错误消息。在本例中,调用,第一个是错误消息

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

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

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

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

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