我有一个jUnit类扩展了一个我需要测试其受保护方法的类。
@RunWith(...)
@Configuration(...)
public class testA extends A{
@Test
public void testProtectedMethod1(){
..
}
}
现在,类A需要在实例化时设置某个变量(DAO)。运行此代码会抛出IllegalArgumentException - 必须提供DAO。
我尝试过的事情:
1)使用@Before手动设置DAO - 无法正常工作
2)使用DAO的属性集为测试类指定bean - 不起作用。
如何使用继承属性实例化此jUnit类?
答案 0 :(得分:0)
您的测试类可能不是您在Unit测试类中继承的类。此外,由于JUnit(实际上是Java)的设计方式,测试私有方法本质上很困难(如果不是不可能的话)。
使用单元测试和T-D-D的重点是能够测试被测课程的公共方法。如果您正在尝试测试私有方法,那么您可能希望首先重新考虑您的(功能)类设计。是否遵循Single Responsibility Principle?
如果您希望对我们仅测试公共方法的一般规则作出例外,可能会使您的私有方法受到保护或对包进行访问(并确保您的测试类与您正在测试的类具有相同的包名)。
无论哪种方式,在JUnit中让测试类继承你正在测试的类是不好的做法,你应该避免这种做法。
答案 1 :(得分:0)
事实证明,我无法注入jUnit测试类的任何属性,因为它的对象是由jUnit运行时本身实例化的。无论如何,我最终使用反射来测试私有方法。