2017-02-08 46 views
0

я дал под SRC/тест/Java эти 2 классаКак включить src/test/java beans для любого <name> Test.java с использованием весеннего способа загрузки?

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class ExampleTest { 

@Autowired 
private Example example; 

    @Test 
    public void getTwoTest() { 

     assertEquals(new Integer(2), example.getTwo()); 
    } 

} 

@TestComponent 
public class Example { 

    public Integer getTwo(){ 
     return 2; 
    } 

} 

Я читал документы, но все еще есть много вопросов. Когда я нажимаю «Запуск в качестве теста Junit», он получает сообщение об ошибке, потому что не может автоподключить мой компонент «Пример». Как я могу сказать, что весенний ботинок ищет бобы внутри src/test/java? Мой второй вопрос: как я могу использовать другие application.properties, эксклюзивные для тестов?

ответ

0

Глядя на JavaDoc для @TestComponent он говорит следующее:

«@Component, который может быть использован, когда боб предназначен только для испытаний, и должны быть исключены из проверки компонента Spring ботинка.»

Итак, пример не будет подключен. Я не уверен, чего вы пытаетесь достичь, тестируя другой тестовый класс. Может быть, попробуйте разместить пример под src/main/java и аннотировать его с помощью @Component?

Что касается конкретных свойств теста, ознакомьтесь с документами для @TestPropertySource. Это позволит вам переопределить свойства с новыми значениями в строке или из отдельного файла.

+0

У меня есть TestDataBuilder, который находится на пакете внутри src/test/java, который мне нужно автоу ... –

+0

Вам определенно нужно Autowire? Что вы тестируете внутри TestDataBuilder? Возможно ли его создать непосредственно (как предлагает @JeanValjean) в тесте через новый TestDataBuilder()? – jayb0b

+0

Ну, да, я могу это сделать. Но как я могу сделать ExampleTest, все бобы внутри src/test/java и src/main/java? –

0

Вы могли бы построить Configuration класс и создать бобы там

@RunWith(SpringRunner.class) 
@ContextConfiguration(classes = ExampleTest.Config.class) 
@SpringBootTest 
public class ExampleTest { 

    @Autowired 
    private Example example; 

    @Test 
    public void getTwoTest() { 

     assertEquals(new Integer(2), example.getTwo()); 
    } 

    @Configuration 
    @PropertySource("classpath:my.properties") 
    @ComponentScan(basePackages = {"my.package"}) 
    public static Config { 
     @Bean 
     public Example example() { 
      return new Example(); 
     } 
    } 

} 

Во всяком случае, this ответ говорит правильно о аннотации. Вы не должны создавать этот bean-компонент или создавать компонент в основном приложении и использовать эту аннотацию для фильтрации компонента из контекста приложения. То же самое касается классов, аннотированных @TestConfiguration.

Наконец, если вам не нужен контекст (т.

+0

У меня есть TestDataBuilder, который находится на пакете внутри src/test/java, который мне нужно автоу ... –

+0

@GunterAmorim да, просто покажите нам, что у вас там есть. Вам нужно, как фасоль? Просто верните его в классе Config, как показано. Вы используете автообувь? Затем снова используйте Config, чтобы передать bean-компоненты через конструктор. – JeanValjean

 Смежные вопросы

  • Нет связанных вопросов^_^