И чтобы Spring мог внедрить эти bean-компоненты, нам нужно использовать аннотацию @Autowired там, где мы хотим, чтобы Spring внедрить этот bean-компонент.
Ниже у меня есть очень простой класс, в котором я использую @Component, чтобы этим управлял Spring. В этом классе есть один список, который я инициализирую под свою ответственность, а затем небольшой метод, выполняющий некоторую логику.
Код: Выделить всё
@Slf4j
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class Parser {
private List strList = new ArrayList();
public void parseStrings(final String[] strs) {
Arrays.stream(strs)
.map(String::toLowerCase)
.filter(str -> str.length() > 8)
.filter(str -> str.endsWith("sam"))
.forEach(sam1 -> { strList.add(sam1); });
}
}
Код: Выделить всё
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired;
import static org.junit.jupiter.api.Assertions.*;
@RunWith(MockitoJUnitRunner.class)
class ParserTest {
@Autowired
private Parser parser;
@Test
void parseStrings() {
String str[] = {"abcsamsam", "abcsyjhgfed abdul sam","abcAhgbkgdjhul samad", "abcabjhgdulsamsam", "sa"};
parser.parseStrings(str);
assertTrue(parser.getStrList().size() == 3);
assertTrue(parser.getStrList().get(0).equalsIgnoreCase("abcsamsam"));
}
}
Код: Выделить всё
java.lang.NullPointerException
Может кто-нибудь подсказать, что я такое? отсутствует?
Нужно ли добавлять конструкторы (что я здесь и делаю, используя аннотации ломбок) при использовании стереотипов Spring в классе.
Подробнее здесь: https://stackoverflow.com/questions/628 ... -test-case