java - Mockito中是否有类似于Junit Setup Method的东西

标签 java junit mocking mockito

我有以下场景

 interface DAO
 {
      String a();
      String b();
      String c();

 }

我创建了这个 DAO 接口(interface)的模拟,并将其提供给名为 DAOProcess 的东西。在 DAOProcess 中,我有各种调用 DAO 方法 a、b 和 c 的方法。

现在每次我需要对 DAOProcess 中的方法进行单元测试时,我都会写成 when(mockDAO.a()).thenReturn("test")

无论如何,我可以将这些 when(mockDAO.a()).thenReturn("test") 移动到所有测试用例吗?

最佳答案

如果您的测试用例都在一个类中,您可以使用带有 @Before 注释的方法,例如:

...
private DAO mockDAO;

@Before 
public void setUp() {
    mockDAO = mock(DAO.class);
    when(mockDAO.a()).thenReturn("test");
    ...etc...
}    
...

或者,如果您需要许多测试类的行为,您可以编写一个实用程序类来设置 Mock 实例的行为,例如:

public class MockDAOPrototype {
    public DAO getMockWithDefaultBehaviour() {
        final DAO mockDAO = mock(DAO.class);
        when(mockDAO.a()).thenReturn("test");
        ...etc...

        return mockDAO;
    }
}

然后在 setUp 方法中调用 MockDAOPrototype.getMockWithDefaultBehaviour()

关于java - Mockito中是否有类似于Junit Setup Method的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971367/

相关文章:

java - java Mock 文件的建议(模拟 java.io.File)

java - 如何在 Spock Groovy 中模拟 Java 8 函数

java - jackson 的@JsonSubTypes 是否仍然需要多态反序列化?

java - Ant 需要 travis 服务器上的 junit.jar

java - 从 Scala 方法到 Java 的返回类型

Android 如何让 espresso 测试失败

java - 使用 Swing Worker 在 Swing GUI 中运行 JUnit 测试

java - 如何模拟 javax.mail.Transport.send() 方法而不实际发送电子邮件?

java - 在多线程 Web 应用程序中访问请求范围的 beans

java - 过滤子类的 JPA CriteriaBuilder 方法是什么?