春季靴子Junit测试单独通过,但在一起运行时不会通过
我正在尝试为courserepository
和queuerepository
创建测试,并且在单独运行时,所有测试都通过,但是当整个文件运行时都不是。
这是courserepo
:
@DataJpaTest
class CourseRepositoryTest {
@Autowired
private CourseRepository courseRepository;
@Autowired
private TestEntityManager entityManager;
@BeforeEach
void setUp() {
Course course =
Course.builder()
.id(1L)
.name("Fullstack applikasjonsutvikling")
.code("IDATT2105")
.semester("V22")
.queueActive(false)
.totalWork(6)
.rules("6_1_6")
.nrOfStudents(100)
.build();
entityManager.persist(entityManager.merge(course));
}
@Test
void findByCodeAndSemester() {
Course course = courseRepository.findByCodeAndSemester("IDATT2105", "V22").get();
assertEquals("Fullstack applikasjonsutvikling", course.getName());
}
@Test
void findById() {
Course course = courseRepository.findById(1L).get();
assertEquals("Fullstack applikasjonsutvikling", course.getName());
}
@Test
void deleteById(){
courseRepository.deleteById(1L);
assertTrue(courseRepository.findById(1L).isEmpty());
}
}
这是queuerepo
:
@DataJpaTest
class QueueRepositoryTest {
@Autowired
private QueueRepository queueRepository;
@Autowired
private TestEntityManager entityManager;
@BeforeEach
void setUp() {
System.out.println("before each called");
Course course =
Course.builder()
.id(1L)
.name("Fullstack applikasjonsutvikling")
.code("IDATT2105")
.semester("V22")
.queueActive(false)
.totalWork(6)
.rules("6_1_6")
.nrOfStudents(100)
.build();
Queue queue = Queue.builder()
.id(1L)
.course(course)
.build();
entityManager.persist(entityManager.merge(queue));
}
@AfterEach
void teardown(){
queueRepository.deleteAll();
}
@Test
void getByCourseId() {
Queue queue = queueRepository.getByCourseId(1L).get();
assertEquals(1L, queue.getId());
}
@Test
void getByCourseId_falseId(){
assertTrue(queueRepository.getByCourseId(2L).isEmpty());
}
}
我尝试将不同的测试注释导入到没有成功的情况下,我认为它的范围无关,但我可能是错误的。
I'm trying to create tests for a courseRepository
and a queueRepository
, and all the tests pass when run individually, but not when the whole file is ran.
This is the courseRepo
:
@DataJpaTest
class CourseRepositoryTest {
@Autowired
private CourseRepository courseRepository;
@Autowired
private TestEntityManager entityManager;
@BeforeEach
void setUp() {
Course course =
Course.builder()
.id(1L)
.name("Fullstack applikasjonsutvikling")
.code("IDATT2105")
.semester("V22")
.queueActive(false)
.totalWork(6)
.rules("6_1_6")
.nrOfStudents(100)
.build();
entityManager.persist(entityManager.merge(course));
}
@Test
void findByCodeAndSemester() {
Course course = courseRepository.findByCodeAndSemester("IDATT2105", "V22").get();
assertEquals("Fullstack applikasjonsutvikling", course.getName());
}
@Test
void findById() {
Course course = courseRepository.findById(1L).get();
assertEquals("Fullstack applikasjonsutvikling", course.getName());
}
@Test
void deleteById(){
courseRepository.deleteById(1L);
assertTrue(courseRepository.findById(1L).isEmpty());
}
}
This is the QueueRepo
:
@DataJpaTest
class QueueRepositoryTest {
@Autowired
private QueueRepository queueRepository;
@Autowired
private TestEntityManager entityManager;
@BeforeEach
void setUp() {
System.out.println("before each called");
Course course =
Course.builder()
.id(1L)
.name("Fullstack applikasjonsutvikling")
.code("IDATT2105")
.semester("V22")
.queueActive(false)
.totalWork(6)
.rules("6_1_6")
.nrOfStudents(100)
.build();
Queue queue = Queue.builder()
.id(1L)
.course(course)
.build();
entityManager.persist(entityManager.merge(queue));
}
@AfterEach
void teardown(){
queueRepository.deleteAll();
}
@Test
void getByCourseId() {
Queue queue = queueRepository.getByCourseId(1L).get();
assertEquals(1L, queue.getId());
}
@Test
void getByCourseId_falseId(){
assertTrue(queueRepository.getByCourseId(2L).isEmpty());
}
}
I've tried importing different test annotations to no success and I don't think its scope related, but I may be wrong.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CourseRepositoryTest
上没有@AfterEach
。它们也可以是@Before 和@After,因为您可以重复使用同一课程。
当针对真实的数据库运行时,您会遇到重复的键冲突。
There is no
@AfterEach
onCourseRepositoryTest
.They also could be @Before and @After, as you can reuse the same course.
When running against a real DB, you would get duplicate key conflicts.