如何模拟单元测试的父类

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();这不会因为这两个工作MockBA将是儿童B.

Don*_*oby 7

你真的不应该试图模拟被测试类的超类.虽然一些模拟框架允许"部分模拟"可能部分模拟你实际测试的类,但这是一个坏主意.

如果类A之间的关系AB足够复杂,你认为你需要这一点,他们可能不应该是在继承关系都没有.

考虑更改代码,以便B委托A代替而不是扩展代码.