【发布时间】:2020-08-02 10:03:40
【问题描述】:
我正在尝试测试我的服务层(实际上是插入),但对我的数据库没有任何影响。 在我的代码中:
@SpringBootTest
@RunWith(SpringRunner.class)
@Transactional
public class StateServiceTest {
@Autowired
private StateService stateService;
@Test
public void createState() {
State state = State.builder()
.id(null)
.name("testState")
.code("21")
.build();
Object mCreatedState = stateService.create(state);
assertThat(mCreatedState).isNotNull().isNotInstanceOf(Exception.class);
}
}
使用 @Transactional 可能解决了我的问题,测试数据没有插入数据库,但仍然对我的数据库有影响。
这意味着如果插入的数据存在于数据库中或重复(对于唯一列),我得到错误重复条目键。
有什么方法可以在不影响我的数据库的情况下测试我的服务和 dao 层? 或者我应该使用像 h2 这样的测试数据库(在内存中)?
【问题讨论】:
标签: spring unit-testing testing