【发布时间】:2021-03-02 22:53:33
【问题描述】:
我需要能够模拟使用 JUnit 注入的嵌套类,以便创建特征测试。问题是:
类 1 使用类 2 的对象,类 2 使用类 3 的对象。在类 1 方法上运行测试时,类 3 对象为空
这是我的类结构:
class 1 {
@Inject private Class2 class2 ;
}
class 2 {
@Inject private Class3 class3 ;
}
我的测试套件需要自上而下运行才能全面测试我的系统,因为它是一个旧系统,我需要从头开始编写测试以逐步重构它。
测试套件:
@RunWith(MockitoJUnitRunner.class)
public class Class1Test {
@Mock
Class3 class3;//this doesn't work object remains null inside of mocked class2
@Mock
Class2 class2; //this injection works and the object isn't null inside of class1
@InjectMocks
public Class1 class1;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testFunction()
{
assertNotNull(class1.exampleFunction());
}
}
我知道正确的方法是存根依赖项,但是这个代码库太大而无法为每一层编写单元测试,我需要能够在 JUnit 中编写测试,这样我就可以在重构时运行这些测试代码库,以确保我没有破坏任何东西,因此我没有使用邮递员,因为我需要它快。
在 Java 8 上 @inject 是一个java注解 使用 JUnit 4,但我认为如果需要我可以使用 junit5。 该项目是一个 j2ee (java ee) 应用程序
【问题讨论】:
标签: java testing jakarta-ee junit integration-testing