我有以下场景
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/