有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在测试期间向类构造函数插入特定值

我使用Google Guice作为DI框架Junit 4&Mockito 2.x用于测试。我有一个类,我在其中使用@Inject注释来连接依赖项。现在作为测试的一部分,我使用@Mock@InjectMocks注入所有依赖项。代码如下:

public class SampleClass {

    @Inject
    private ClassA classA;

    @Inject
    private ClassB classB;

    @Inject
    private Executor javaThreadExecutor;

    public void doSomething() {
        // some logic

        javaThreadExecutor.execute(()-> {

            // some logic

        })
    }
}

下面是我用于测试的代码:

public class SampleClassTest {

    @Mock
    private ClassA classA;

    @Mock
    private ClassB classB;

    private Executor javaThreadExecutor = new Executor(10);

    @InjectMocks
    private SampleClass toTestInstance;

}

现在的问题是,我希望将执行器作为new Executor(10)传递,而不是模拟实例。但我似乎找不到让mockito使用Executor实例的方法

我知道两种解决办法

  • 删除所有注释,改为使用构造函数注入。但这是我无法改变的,也是我无法控制的
  • 为执行器创建一个setter,然后在测试用例中设置它(看起来更像是围绕tbh展开的工作)
  • 将执行器包装在功能接口中(对于测试用例tbh来说似乎过于工程化)

问题是,有没有一种方法可以通过注释或通过init注入Executor的特定实例


共 (0) 个答案