gpt4 book ai didi

java - 如何编写接口(interface)自定义保存方法的测试用例

转载 作者:行者123 更新时间:2023-11-30 05:52:02 26 4
gpt4 key购买 nike

在为我的项目编写 jUnit 时,我遇到了一段代码,我不知道如何继续执行 jUnit。下面是我尝试编写 jUnit 的代码。

@Repository
public interface PrescriptionRepository extends CrudRepository<Prescription,
Integer> {

@Modifying
@Transactional
@Query(value = "insert ignore into prescription (dose_id,med_id) values (:doseId,:medId)", nativeQuery = true)
public void savePrescription(@Param("doseId") int doseId, @Param("medId") int medId);

}
}

感谢您提前提供的所有帮助。

最佳答案

要测试 Spring 生成的该接口(interface)的类的行为,您首先需要 Spring 容器。
那么如果你想编写一个单元测试(而不是完整的集成测试),你需要使用嵌入式数据库(例如H2)。
通常,您不想加载整个 Spring 容器,而只想加载 JPA Spring 组件的一部分。
如果您使用 Spring Boot,切片测试功能 @DataJpaTest将非常有帮助。

然后关于测试部分,非常简单:在单元测试中调用保存方法,然后使用存储库方法检索插入的数据。
最后断言你得到了预期的对象。

import org.junit.*;
import org.junit.runner.*;
import org.springframework.boot.test.autoconfigure.orm.jpa.*;

import static org.assertj.core.api.Assertions.*;

@RunWith(SpringRunner.class)
@DataJpaTest
public class PrescriptionRepositoryTest {

@Autowired
private TestEntityManager entityManager;

@Autowired
private PrescriptionRepository repository;

@Test
public void savePrescription() throws Exception {
this.repository.savePrescription(...);
Prescription actualPrescription = em.findById(...);
assertThat(actualPrescrition.getDoseId()).isEqualTo("doseId...");
assertThat(actualPrescrition.getMedId()).isEqualTo("medId...");
}

}

关于java - 如何编写接口(interface)自定义保存方法的测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com