【发布时间】:2023-02-04 02:27:13
【问题描述】:
我有这个存储库:
public interface CourseRepository extends MongoRepository<Course, String>
{
void deleteByUniqueId(String uniqueId);
Optional<Course> findByUniqueId(String courseUniqueId);
}
我想使用 TestNG 编写测试。到目前为止,我试过这个:
@DataMongoTest
@SpringBootTest(classes= {Application.class})
public class CourseRepositoryTest {
@Autowired
private CourseRepository courseRepository;
private Course course;
@BeforeMethod
public void setUp() {
CourseAddRequest courseAddRequest = new CourseAddRequest();
course = new Course(courseAddRequest);
courseRepository.save(course);
}
@Test
public void testFindByUniqueId() {
Optional<Course> foundCourse = courseRepository.findByUniqueId(course.getUniqueId());
assertTrue(foundCourse.isPresent());
assertEquals(foundCourse.get(), course);
}
但我得到错误:
java.lang.NullPointerException: Cannot invoke "com.cti.repository.CourseRepository.save(Object)" because "this.courseRepository" 为空
我应该改变什么?谢谢!
【问题讨论】:
-
名义上,链接副本中的答案将是您解决此问题的资源。如果您确定它们没有,请提供更多信息 - 最值得注意的是,如果您尝试在调试模式下运行测试,您会看到什么(例如,在您的
SpringBootTest注释中,添加properties = { "debug=true" }和看看是否有任何事情突然出现,可能对帮助您或我们解决此问题有价值)。 -
假设您在测试应用程序属性中定义了一个数据源,那么您可能只需使用
@SpringBootTest注释您的测试(删除classes=...),然后删除@DataMongoTest注释。
标签: java testng spring-boot-test