实例化jUnit测试类



我有一个jUnit类扩展了一个类,我需要测试这个类的受保护方法。

@RunWith(...)
@Configuration(...)
public class testA extends A{
    @Test
    public void testProtectedMethod1(){
    .. 
    }
}

现在,类A需要在实例化时设置某个变量(DAO)。运行此代码会抛出IllegalArgumentException -必须提供DAO。

我尝试过的事情:

1)使用@Before手动设置DAO不起作用

2)用DAO的属性集为测试类指定bean -不起作用。

我如何用继承属性实例化这个jUnit类?

在测试下的类可能不是您在单元测试类中继承的类。此外,由于JUnit(实际上还有Java)的设计方式,测试私有方法本质上是困难的(如果不是不可能的话)。

使用单元测试和T-D-D的全部意义在于能够测试被测类的公共方法。如果您试图测试私有方法,您可能首先需要重新考虑(函数式)类的设计。是否遵循单一责任原则?

如果您希望对我们只测试公共方法的一般规则做一个例外,也许让您的私有方法受保护或包访问(并确保您的测试类与您的测试类具有相同的包名称)。

无论哪种方式,在JUnit中让测试类继承被测试类都是不好的做法,您应该避免这种情况。

结果是我不能注入jUnit测试类的任何属性,因为它的对象是由jUnit运行时本身实例化的。无论如何,我最终使用反射来测试私有方法。

最新更新