我必须做的事:
我必须用JMockit测试我的spring。我需要做两件事:
什么问题:
为了处理第一项,我应该使用MockUp;为了处理第二项,应该使用@ second 。据我所知,这两种方法是相互覆盖的,。
我的问题:
我的代码:
@WebAppConfiguration
@ContextConfiguration(locations = "classpath:ctx/persistenceContextTest.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class MyControllerTest extends AbstractContextControllerTests {
private MockMvc mockMvc;
@Autowired
protected WebApplicationContext wac;
@Mocked()
private MyServiceImpl myServiceMock;
@BeforeClass
public static void beforeClass() {
new MockUp<MyServiceImpl>() {
@SuppressWarnings("unused")
@Mock
public List<Object> doService() {
return null;
}
};
}
@Before
public void setUp() throws Exception {
this.mockMvc = webAppContextSetup(this.wac).build();
}
@Test
public void sendRedirect() throws Exception {
mockMvc.perform(get("/doService.html"))
.andExpect(model().attribute("positions", null));
new Verifications() {
{
myServiceMock.doService();
times = 1;
}
};
}
}发布于 2013-09-13 19:28:14
我不知道是什么给您的印象,您“应该使用”MockUp的东西,而使用@Mocked的其他东西在同一测试。
实际上,您可以使用这两个API中的任何一个,因为它们都非常有能力。但是,通常情况下,在给定的测试(或测试类)中只使用其中一种,而不是两者都使用。
要验证一个给定的模拟方法发生了多少次调用,可以在使用@Mock注释时使用“MockUp/minInvocations/maxInvocations”属性,或者在使用@Mocked时使用"times/minTimes/maxTimes“字段。选择一个最能满足您的需求和测试风格。例如,测试,请查看JMockit文档。
https://stackoverflow.com/questions/18769669
复制相似问题