gpt4 book ai didi

java - 集成测试,但是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:23 24 4
gpt4 key购买 nike

<分区>

最近我团队内部的一场辩论让我感到奇怪。基本主题是我们应该用功能/集成测试覆盖多少和什么(当然,它们不一样,但这个例子是虚拟的,这无关紧要)。

假设您有一个类似“ Controller ”的类:

public class SomeController {
@Autowired Validator val;
@Autowired DataAccess da;
@Autowired SomeTransformer tr;
@Autowired Calculator calc;

public boolean doCheck(Input input) {
if (val.validate(input)) {
return false;
}

List<Stuff> stuffs = da.loadStuffs(input);
if (stuffs.isEmpty()) {
return false;
}

BusinessStuff businessStuff = tr.transform(stuffs);
if (null == businessStuff) {
return false;
}

return calc.check(businessStuff);
}
}

我们确实需要大量的单元测试(例如,如果验证失败,或者数据库中没有数据,...),这是毫无疑问的。

我们的主要问题和我们无法达成一致的是,集成测试应涵盖多少 :-)

我认为我们的目标是减少集成测试(测试金字塔)。我将从中涵盖的只是一个快乐-不快乐的路径,执行从最后一行返回,只是为了看看我是否将这些东西放在一起它不会爆炸。

问题是要说出为什么测试结果为 false 并不那么容易,这让一些人对此感到不安(例如,如果我们只检查返回值,隐藏了测试是绿色的,因为有人更改了验证并返回 false)。当然,是的,我们可以涵盖所有情况,但恕我直言,那将是一个严重的矫枉过正。

有没有人对这类问题有很好的经验法则?还是推荐?读?讲话?博文?有什么主题吗?

提前致谢!

PS:抱歉这个丑陋的例子,但很难将特定代码部分转换为示例。是的,人们可以争论抛出异常/使用不同的返回类型/等等。但由于外部依赖性,我们的手或多或少受到了束缚。

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