java Jmockit autowire与已注入模拟的依赖关系

cgh8pdjw  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(246)

我有一种情况,在这种情况下,我有某些模拟和实用程序(不是静态方法,而是依赖于模拟的某些操作)。
这样说吧

class MyReusableClassForTesting {

@Mocked
private ClassA attribute;

// And some more @Mocked and methods that are relying on the mocks.
}

我想在我的测试类中使用MyReusableClass的示例,并注入mock。

class MyTestClass {

// Need this be a real instance with mocks injected inside it
private MyReusableClassForTesting instance;
}

我尝试了@Mocked@Capturing@Tested@Injectable。它们似乎都不起作用。有什么想法吗,我如何才能让这个在Jmockit上起作用呢?

vc9ivgsu

vc9ivgsu1#

您通常只需执行以下操作:

class MyTestClass {
    // Need this be a real instance with mocks injected inside it
    @Tested
    public MyReusableClassForTesting instance;
}

如果'instance'构造函数接受参数,或者如果它有Autowired的东西,那么在测试类级别添加(可能是多个):

@Injectable
protected ClassA attribute;

为了确保JMockit正常工作,我通常会添加一个简单的测试

@Test
public void testCtor() {
    assertNotNull(instance);
}

JMockit将负责创建基于@Tested和@Injectable的“示例”。此测试失败的唯一原因是JMockit不工作-即您忘记添加javaagent。您通常在构建脚本(build.gradle或pom.xml)中以及从IDE手动运行测试时都需要javaagent。

相关问题