gpt4 book ai didi

java - 如何编写在代码覆盖期间覆盖 catch block 的 Junit 测试用例?

转载 作者:行者123 更新时间:2023-11-29 05:22:09 25 4
gpt4 key购买 nike

下面是代码,我想知道如何编写 JUnit 测试,以便我的覆盖范围可以覆盖 catch block

import com.pkg.ClothBrandQuery;

Public class MapBrand implements SomeInterface{
public Brand mapThisBrands(final ClothBrand clothBrand) {

Brand brand = new Brand();
try{
defaultBrand = clothBrandQuery.getClothBrandMethod(ProjectConstants.DEFAULT_BRAND_KEY);
}
catch(Exception e){
logger.fatal("Database error occurred retrieving default cloth brands", e);
System.exit(2);
}
if(defaultBrand != null && defaultBrand != clothBrand){
brand.setBrandName(clothBrand.getBrandName());
brand.setCompanyName(clothBrand.getCompanyName());
brand.setBackgroundColor(clothBrand.getBackgroundColor());
}
else{
brand.setBrandName(defaultBrand.getBrandName());
brand.setCompanyName(defaultBrand.getCompanyName());
brand.setBackgroundColor(defaultBrand.getBackgroundColor());
}
}
}

我能够为 mapThisBrands 编写测试方法来测试品牌对象,但我不知道如何测试 defaultBrand 对象以及如何编写将执行 catch block 的测试用例。

最佳答案

System.exit(2) 代码放在它自己的类中,然后将其 stub 或模拟出来,而不是直接调用该代码。这样,在您的测试中它不会真正退出,但您会知道在生产环境中它会。

如果您不知道如何处理(模拟或 stub ),您应该了解更多关于 dependency injection 的信息.

现在你已经完成了一半。另一半是使用依赖注入(inject)模拟出clothBrandQuery。让它的 getClothBrandMethod 无论如何都会抛出异常。然后你会沿着这条路走下去。 Mockito 是一个很好的模拟框架。 .

关于java - 如何编写在代码覆盖期间覆盖 catch block 的 Junit 测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com