kas*_*ere 4 java unit-testing mocking
所以我有三个类:A,B,C.我需要为类编写单元测试A.
class A extends B{
//fields go here ...
public A(String string, ...){
super.(string,...);
}
//other methods here ...
}
class B{
C stuff;
//other stuff
}
Run Code Online (Sandbox Code Playgroud)
所以C是一个重要的资源(如JDBC或ssh Session).当然,我在嘲笑C.我怎么模仿B.Imagine B有许多扩展它的子类.
我的主要问题A是打电话super.(...).我不想将方法注入到A测试中.对我来说这是糟糕的设计.任何想法如何嘲笑父母?
例如,我不能这样做class MockB extends B{...},然后尝试MockB obj = new A();这不会因为这两个工作MockB和A将是儿童B.
你真的不应该试图模拟被测试类的超类.虽然一些模拟框架允许"部分模拟"可能部分模拟你实际测试的类,但这是一个坏主意.
如果类A之间的关系A和B足够复杂,你认为你需要这一点,他们可能不应该是在继承关系都没有.
考虑更改代码,以便B委托A代替而不是扩展代码.