我正在嘗試撰寫一個虛擬集成測驗,以便對我第一次使用的這些技術進行一些練習,但是我目前在我的自動裝配存盤庫欄位(稱為movieRepository)上面臨 NullPointerException 。
我從其他問題中看到,主要原因是沒有正確設定注釋。但是,我認為情況并非如此,因為 MovieRepository 沒有 @Repository 注釋,因為我理解 MongoRepository 不需要它(但即使添加它也不會改變任何東西),而是 MovieRepositoryIntegrationTest 繼承了注釋它擴展的抽象類。
MovieRepository.java
package com.example.testingtwo.repository; // /main/
public interface MovieRepository extends MongoRepository<Movie, String> {
}
AbstractContainerBaseTest.java
package com.example.testingtwo; // /test/
@DataMongoTest
public abstract class AbstractContainerBaseTest {
static final MongoDBContainer mongoDBContainer;
static {
mongoDBContainer = new MongoDBContainer(DockerImageName.parse("mongo:6.0.2"));
mongoDBContainer.start();
}
@DynamicPropertySource
static void setProperties(DynamicPropertyRegistry registry) {
registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
}
}
MovieRepositoryIntegrationTest.java
package com.example.testingtwo.repository; // /test/
public class MovieRepositoryIntegrationTest extends AbstractContainerBaseTest {
@Autowired
private MovieRepository movieRepository;
@AfterEach
void cleanUp() {
movieRepository.deleteAll();
}
@Test
public void testFindById() {
Movie movie = new Movie(null, "Test Name", "Test Description");
String movieId = movieRepository.save(movie).getId(); // java.lang.NullPointerException: "this.movieRepository" is null
Movie movieFound = movieRepository.findById(movieId).orElse(null);
assertNotNull(movieFound);
assertEquals(movieFound.getName(), movie.getName());
assertEquals(movieFound.getDescription(), movie.getDescription());
}
}
其他資訊:
- 爪哇 17
- Spring Boot 3.0 RC1
- Junit5
- 構建工具:Maven
- Spring 依賴項:Spring Web、Spring Data MongoDB、Lombok、Testcontainers
uj5u.com熱心網友回復:
依賴項為 null 的事實告訴我,單元測驗可能沒有在 Spring 背景關系中運行,因此就好像您甚至沒有@Autowired注釋一樣。你在用junit4嗎?根據@DataMongoTest“使用 JUnit 4 時,此注釋應與@RunWith(SpringRunner.class).”結合使用的 javadoc。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/527349.html
上一篇:比較Java中不同串列中的特定屬性的最佳方法是什么?
下一篇:運行sprringboot測驗用例時出現NoClassDefFoundError:javax/servlet/ServletException錯誤
