Я учусь запускать @SpringBootTest «правильным способом», но столкнулся с проблемой с автопроводкой в моих тестовых классах (в каталоге «src / test / java»):
У меня есть классГрафики, которые аннотируются @Component в пакете под "src / main / java":
@Component
public class Graphs {
....
}
Затем я создал тестовые классы под "src / test / java".Один из них:
@SpringBootTest
public class GraphsTest {
@Test
public void testRun () {
Graphs graph = new Graphs(); // Using new to create an object
if (graph==null) {
System.out.println("It's null");
} else {
System.out.println("It's not null");
}
}
...
Когда я тестирую запуск метода «testRun», он выдает «Это не ноль», как и ожидалось.
После модульных тестов я хотел внедрить «график», так как класс Graphs был аннотирован @Component, таким образом, bean-компонент должен быть доступен для автопроводки:
@SpringBootTest
public class GraphTest {
@Autowired
private Graphs graph; // auto inject a bean graph
@Test
public void testRun () {
if (graph==null) {
System.out.println("it's null");
} else {
System.out.println("it's not null");
}
}
....
Теперь с автопроводкой, «testRun»«всегда производится:« это ноль », даже когда я пытался выполнить следующее (« xxxxxx »- полное имя пакета, содержащего файл Graphs.java):
- добавление @Import (xxxxxx / Graphs).class)
- добавление @ComponentScan ("xxxxxxx")
- копирование файла Graphs.java в тестовый пакет
Добавление @Bean в TestConfiguration.javaв тестовом пакете.
@Bean
public Graphs graph () {
return new Graphs();
}
Я начал подозревать, что я что-то неправильно понял или пропустил при настройке среды тестирования Spring Boot: неэто @SpringBootTest все, что мне нужно для начала работы?