健全性检查 - 使用 JUnit 时对象数量显着增加

问题描述 投票:0回答:3

我第一次在项目中使用 JUnit,它迫使我重构代码的方式让我着迷。我注意到的一件事是,为了能够测试代码块而创建的对象数量正在显着增加。这是典型的吗?

java junit refactoring
3个回答
1
投票

是的,这是正常的。

一般来说,您的类和方法越小/越集中,就越容易理解和测试它们。这可能会产生更多文件和实际代码行,但这是因为您添加了更多抽象,使您的代码具有更好/更清晰的设计。

您可能想阅读单一责任原则。鲍勃叔叔在他的《干净代码》一书中也有一些重构示例,他在其中谈到了这些要点。 进行单元测试时还有一件事。

依赖注入

是最重要的事情之一,它可以在构建代码时为您省去很多麻烦。 (为了澄清,DI 不一定会导致您有更多的类,但它将有助于您的类之间更多地解耦。


1
投票

一个例子是,当您有一个方法执行计算、更新对象然后保存到数据库时。

public void calculateAndUpdate(Thing t) { calculate(t); // quite a complex calculation with mutliple results & updates t dao.save(t); }

您可以创建一个由计算方法返回的计算对象。然后该方法更新 Thing 对象并保存它。

public void calculateAndUpdate(Thing t) { Calculation calculation = new Calculator().calculate(t); // does not update t at all update(t, calculation); // updates t with the result of calculation dao.save(t); // saves t to the database }

所以我引入了两个新对象,计算器和计算。这使我能够测试计算结果,而无需拥有可用的数据库。我也可以对更新方法进行单元测试。它也更实用,我喜欢:-)

如果我继续用原来的方法测试,那么我就必须对计算更新进行单元测试并保存为一项。这不太好。

对我来说,第二个是更好的代码设计、更好的关注点分离、更小的类、更容易测试。但小班的数量却在增加。但整体复杂性下降了。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.