2

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);
  }  
}
4

0 に答える 0