实例化jUnit测试类

时间:2016-10-10 21:15:26

标签: java hibernate junit

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

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

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

我尝试过的事情:

1)使用@Before手动设置DAO - 无法正常工作

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

如何使用继承属性实例化此jUnit类?

2 个答案:

答案 0 :(得分:0)

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

使用单元测试和T-D-D的重点是能够测试被测课程的公共方法。如果您正在尝试测试私有方法,那么您可能希望首先重新考虑您的(功能)类设计。是否遵循Single Responsibility Principle

如果您希望对我们仅测试公共方法的一般规则作出例外,可能会使您的私有方法受到保护或对包进行访问(并确保您的测试类与您正在测试的类具有相同的包名)。

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

答案 1 :(得分:0)

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