Java 单元测试,从循环断言中获取更多数据
Java unit testing, get more data from assertion in loop
我正在对 returns 数百种产品的网络服务进行单元测试。
在我今天的测试中,其中一个产品缺少一个字段。
因为一个产品缺少一个字段,我的断言失败了(成功找到错误,所以这取决于你如何看待它),但我想知道是哪个产品有问题。
这是我的断言代码:
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);
通常,在 JUnit 中进行断言的调用会被重载,以便在失败时可以选择创建错误消息。在这种情况下,调用 the overload of assertNotNull
that takes 2 parameters,第一个是错误消息。
assertNotNull("product " + product.title + " failed", product.localeName);
你可以这样做,使用 assert
运算符:
assert product.localeName != null : "product must have a local name";
我正在对 returns 数百种产品的网络服务进行单元测试。 在我今天的测试中,其中一个产品缺少一个字段。
因为一个产品缺少一个字段,我的断言失败了(成功找到错误,所以这取决于你如何看待它),但我想知道是哪个产品有问题。
这是我的断言代码:
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);
通常,在 JUnit 中进行断言的调用会被重载,以便在失败时可以选择创建错误消息。在这种情况下,调用 the overload of assertNotNull
that takes 2 parameters,第一个是错误消息。
assertNotNull("product " + product.title + " failed", product.localeName);
你可以这样做,使用 assert
运算符:
assert product.localeName != null : "product must have a local name";