SomeBean というクラスと、さまざまなシナリオ用にスタブで構成された 2 つのテストがあります。私はSpring Bootを使用しています。
2 番目のテストは、例外をスローするために行ったスタブがないため、例外なしで合格するはずです。
も機能していDirtiesContext
ません。Test2.javaのコメント付きコードを削除すると、テストに合格します。のようなものを使用して、不要な下塗りを削除したいと思いDirtiesContext
ます。
私は何か基本的なことを見逃しているかもしれません。誰かが私が間違っていることを指摘できますか。
@Service
public class SomeBeanProcessor {
@Autowired
private BeanValidator beanValidator;
public ResultBean process(SomeBean sb) throws ValidationException{
beanValidator.validateBean(sb);
//Do some processing and return ResultBean;
}
}
Test1.java
RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyApp.class})
@WebAppConfiguration
@ContextConfiguration(classes=Test1.Test1Config.class) {
public class Test1 {
@Configuration
static class Test1Config {
@Bean
public BeanValidator getSomeRequestValidator() {
return new BeanValidator() {
public void validateBean(SomeBean bean) throws ValidationException {
throw new ValidationException("Validation failed");
}
};
}
}
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Autowired
private SomeBeanProcessor aBeanProcessor;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
@DirtiesContext
public void doTestValidationErrors() throws ValidationException{
SomeBean sb = new SomeBean();
this.aBeanProcessor.process(sb);
Assert.fail("Should throw exception");
}
}
Test2.java
RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyApp.class})
@WebAppConfiguration
@ContextConfiguration(classes=Test2.Test2Config.class) {
public class Test2 {
@Configuration
static class Test2Config {
//@Bean
//public BeanValidator getSomeRequestValidator() {
// return new BeanValidator() {
// public void validateBean(SomeBean bean) throws ValidationException { //Do nothing
// }
// };
//}
}
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Autowired
private SomeBeanProcessor aBeanProcessor;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
@DirtiesContext
public void doTestSuccess() throws ValidationException{
SomeBean sb = new SomeBean();
this.aBeanProcessor.process(sb);
}
}