首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单元/集成测试可以没有断言吗?那这个特殊的案例呢?

单元/集成测试可以没有断言吗?那这个特殊的案例呢?
EN

Stack Overflow用户
提问于 2019-05-09 17:20:18
回答 1查看 283关注 0票数 0

场景:我有一些集成测试。其中一个测试删除。所以我这样做了:

代码语言:javascript
复制
@Test
@Order(6)
public void delete() {
    rfxCriteriRepository.delete(rfxCriteriEconomico.getIdrfxcriteri());
}

简单地测试该方法是否没有抛出异常。然后,为了确保删除成功,我添加了:

代码语言:javascript
复制
@Test
@Order(7)
public void getDelete() {
    RfxCriteri rfxCriteriEconomicoDb = rfxCriteriRepository.findByIdrfxcriteri(
        rfxCriteriEconomico.getIdrfxcriteri()
    );

    Assertions.assertNull(rfxCriteriEconomicoDb);
}

我的想法是,第一个测试测试代码。如果代码写得很好,它应该不会抛出异常,并且测试通过。第二个测试测试删除操作是否有效地从数据库中删除了该条目。我认为它们是两个独立的测试。

你认为每个测试都必须有一个assert吗?或者你认为这两个测试应该是一个独特的测试?谁能给我一些关于单元测试的指南,让我了解一下?

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 18:25:27

如果你没有断言,那么你就没有测试。测试意味着您需要能够设置一些数据,运行测试中的方法,然后测试结果,这就是断言发挥作用的地方。

以您的特定示例为例,您的代码没有抛出错误的事实并不意味着删除操作确实有效。测试的唯一方法是去数据库检查,这意味着你有一个集成测试,而不是单元测试。

编写因为代码中没有错误而成功的“测试”是毫无意义的,你实际上并不是在测试任何东西,有无数种方法可以编写不会失败但实际上没有做任何事情的代码。

测试边缘情况--传递0作为id,传递null。测试当db中不存在id时会发生什么。测试当id存在但存在关联数据时会发生什么,这可能意味着您需要首先删除其他内容。测试快乐路径场景。

如果您期望在某些场景中出现某些错误,那么也要对这些错误进行测试。

你可以写一大堆测试,确保它们可以单独运行,它们不共享状态等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56056186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档