java - 使用@Autowired 注释测试注入(inject) bean

标签 java testing junit mockito

我想使用 Junit 和 Mockito 编写单元测试,在这种情况下我不想编写集成测试。我要测试的方法使用通过 Spring 使用 @Value 或 @Autowired 注释注入(inject)的变量。我如何填充注入(inject)的变量,以便在我运行测试时它们不为空。在注释出现之前,我会创建变量的模拟类并通过 setter 方法设置它们。

我正在编写单元测试,所以我不想使用 @RunWith(SpringJUnit4ClassRunner.class)

最佳答案

您可以使用MockitoJUnitRunner

class SystemUnderTest {
    @Autowired
    private Dependency dep;

    // ...
}
@RunWith(MockitoJUnitRunner.class)
public class YourTest {
    @Mock
    private Dependency mockDependency;

    @InjectMocks
    private SystemUnderTest testee;

    @Test
    public void testSystem() {
        // at this point testee is already injected with mockDependency
    }
}

关于java - 使用@Autowired 注释测试注入(inject) bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000217/

相关文章:

javascript - 在客户端测试 Javascript

java - 无法在VS代码中运行测试

java - 测试 Lombok 的 @UtilityClass 自动生成的代码

java - JSF 图像下载,Base64 编码保存到数据库

java - Oracle中基于rowid的更新

java - Android: fragment 重叠其他元素

java - 为什么在 Java 中比较 float 不一致?

python - 为什么这个简单 bool 逻辑的 pytest 失败了?

linux - 手动卡住 X 服务器

java - 如何使用 google-truth 测试是否抛出了预期的异常?