春季靴子Junit测试单独通过,但在一起运行时不会通过

发布于 2025-01-18 02:45:44 字数 2670 浏览 2 评论 0原文

我正在尝试为courserepositoryqueuerepository创建测试,并且在单独运行时,所有测试都通过,但是当整个文件运行时都不是。

这是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

錯遇了你 2025-01-25 02:45:44

CourseRepositoryTest 上没有 @AfterEach
它们也可以是@Before 和@After,因为您可以重复使用同一课程。

当针对真实的数据库运行时,您会遇到重复的键冲突。

There is no @AfterEach on CourseRepositoryTest.
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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文