问题描述
我正在使用 Spring Boot 并遵循 TDD 开发 REST CURD API。我从 READ 操作开始测试 READ 工作我必须在我的数据库中预填充数据。为此,我使用 H2 DB 并创建了我的存储库,并在我的集成测试设置步骤中使用此存储库在执行 GET 实际数据之前填充数据。我的大学告诉我在集成测试中使用 Repository 为这个 GET 操作测试创建数据的不好做法,他建议在设置步骤中调用 POST API 端点,执行 GET 测试也实现 PUT 和 DELETE IT 测试。
我的问题是
- 为了在集成测试类中设置数据而注入实际存储库是否错误?
- 在执行实际测试逻辑之前,我们可以在设置或 GET 测试用例中使用/调用和端点 (POST) 吗?
- 我们能否在 init/setup 中调用 POST 端点并使用 Repository 填充数据并使用 POST 数据实现 GET、PUT、DELETE 测试?建议在设置中调用直接 POST 端点以测试 Test 类中的另一个端点并在类级别使用 @TestOrder 注释。
案例 1
@SpringBoottest
@AutoConfiguremockmvc
public class CURDtest() {
@Autowired
private TestMovieRepository testMovieRepository;
@BeforeEach
void init() {
Movie myMovie = new Movie("test");
testMovieRepository.save(myMovie);
}
@Test
void getMovie_whenReturnsMovie(){
//Test logic using mockmvc;
}
}
情况 2:
@SpringBoottest
@AutoConfiguremockmvc
public class CURDtest() {
@BeforeEach
void init() {
//call POST Endpoint usin mockmvc populate data in table
}
@Test
void getMovie_whenReturnsMovie(){
//Test logic using mockmvc;
}
}
情况 3:
@SpringBoottest
@AutoConfiguremockmvc
@TestOrder
public class CURDtest() {
@BeforeEach
void init() {
//call POST Endpoint usin mockmvc populate data in table
}
@Test
@Order(1)
void getMovie_whenReturnsMovie(){
//Test logic using mockmvc;
}
@Test
@Order(2)
void updateMovie_whenReturnsMovie(){
//Test logic using mockmvc;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)