[英]Reduce amount of or remove @Autowired annotations In Spring Junit 5 test
在 Junit 5 中是否可以在沒有 @Autowired 注釋的情況下將 spring bean 注入測試 class 中? 我的代碼如下所示:
@SpringBootTest(classes = SomeApp.class)
@ExtendWith(SpringExtension.class)
public class SomeTest {
@Autowired
private SomeService someService
@Test
public void shouldMakeMagic() { ....
我想刪除所有 @Autowired 注釋
Kotlin 的優點是您可以在構造函數上聲明成員字段,而在 Java 中不能這樣做。 在 Java 中,您可以創建@Autowired
構造函數,但它不會減少樣板,因為您仍然必須在 class 中聲明 class 成員。
但是,如果您願意使用神奇的 Java 樣板代碼刪除器 Project Lombok,您可以實現類似的效果,請參見下面的示例和注釋:
@SpringBootTest
@ExtendWith(SpringExtension.class)
// Below will generate you the constuctor for each final member
// and add @Autowired on it so resulting:
// @Autowired
// public SomeTest(SomeService someService, SomeOtherService someOtherService)
// {
// this.someService = someServive;
// this.someOtherService = someOtherServive;
// }
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class SomeTest {
private final SomeService someService;
private final SomeOtherService someOtherService;
@Test
public void shouldMakeMagic() {
assertNotNull(someService);
assertNotNull(someOtherService);
}
}
現在不同的是,雖然 Kotlin 自動從構造函數生成成員,但 Java 和 Lombok 從成員生成構造函數。
注意:這當然也適用於主要代碼,而不僅僅是測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.