【发布时间】:2017-06-07 12:51:26
【问题描述】:
我正在为我在代码中定义的一些 bean 编写 JUnit 测试,以便通过 java 注释了解 spring 配置。测试代码如下:
public class FooTest {
@MockBean
private Baz baz; //injected
@MockBean
private Qux qux; //injected
public void testBar() {
Foo foo = new Foo(baz);
Qux reponse = foo.bar();
// verify or assert?
}
}
其他类是这样定义的:
@Component
class Foo {
Baz baz;
@Autowired
Foo(Baz baz) {
this.baz = baz
}
Qux bar() {
baz.waldo();
baz.fred();
return baz.newQux();
}
}
@Component
class Baz {
//...
}
正如您在我的 JUnit 测试中看到的那样,我从 FooTest 类中的模拟 Qux bean 返回了一个 Qux 响应。这让我开始考虑在Foo 类中测试bar 方法。我在这里看到了 3 个选项,想知道什么是最佳做法?
- 在
FooTest中的qux实例变量上的testBar测试方法response上执行assertEquals。 - 执行上述操作,但还要在
FooTest中的baz实例上执行waldo和fred的fred吗?还是这些验证调用是多余的,因为返回了baz,我假设它们被调用了? - 做 1 和 2?
【问题讨论】:
标签: java spring unit-testing junit