0

我在测试类中自动装配了一个字段

@Autowired
private AbcDAO abcDAO;

并像这样使用它

doThrow(new RuntimeException()).when(abcDAO).methodName(xyz);

或者

doNothing().when(abcDAO).methodName(xyz);

我在这样的spring文件中嘲笑了这个DAO类

<bean id="abcDAO" class="org.mockito.Mockito" factory-method="mock"  >
        <constructor-arg value="a.b.c.abcDAO" />
    </bean>

我明白了NotAMockException Argument passed to when() is not a mock.

当我像这样使用 `@Mock 注释时

@Mock
    private AbcDAO abcDAO;

直接在测试类中(而不是 @Autowiring 它并在 spring 中模拟),它工作正常。

为什么会这样?

编辑:

好的,那么让我告诉你这样做的原因。

我们有一个服务 X,我想为“X”的 API 编写 junit。Junits 的编写方式是我创建一个客户端并调用这些 API。我没有直接调用可以使用 @Mock 和 @Inject 模拟的方法。

我不确定是否清楚,但这是需要在 spring 文件中模拟时的用例。

4

1 回答 1

2

看到这个答案:why-does-mockito-think-this-autowired-bean-is-null

Mockito.mock不带String但是Class<?>。正如在另一个问题中所述。真的有充分的理由尝试在 Spring 上下文中创建模拟吗?

于 2012-10-12T14:00:05.503 回答