当前位置: 首页 > 面试题库 >

我如何改善我的junit测试

濮阳和泰
2023-03-14
问题内容

正确,我的junit测试看起来像是一个漫长的故事:

  • 我创建了4位用户
  • 我删除了1位用户
  • 我尝试使用已删除的用户登录,并确保失败
  • 我使用剩余的3个用户之一登录并确认我可以登录
  • 我从一个用户向另一个用户发送一条消息,并验证该消息是否出现在发件人的发件箱和收件人的收件箱中。
  • 我删除邮件

优点
:测试非常有效(非常善于检测错误)并且非常稳定,因为它们仅使用API​​,如果我重构代码,那么测试也会被重构。由于我不使用“肮脏的把戏”,例如以给定状态保存和重新加载数据库,因此我的测试忽略了架构更改和实现更改。

缺点
:测试变得难以维护,测试中的任何更改都会影响其他测试。测试运行8-9分钟,这对于持续集成非常有用,但对开发人员来说有点令人沮丧。测试不能孤立运行,最好的办法是在您感兴趣的测试运行后停止-
但您绝对必须运行之前进行的所有测试。

您将如何改善我的考试?


问题答案:

单元测试应该(理想情况下)应该是独立的,并且能够以任何顺序运行。因此,我建议您:

  • 分拆测试以保持独立
  • 考虑使用内存数据库作为测试的后端
  • 考虑将每个测试或套件包装在最后回滚的事务
  • 对单元测试进行概要分析,以了解时间在哪里,然后集中精力

如果花费8分钟创建几个用户并发送一些消息,则性能问题可能不在测试中,而是可能是系统本身存在性能问题的征兆-只有您的分析器才能确定!

[caveat:尽管我可能只是少数,但我不认为这些测试是“集成测试”;我认为这些 测试是功能的单元测试 ,la TDD]



 类似资料:
  • 问题内容: 我的junit测试看起来像是一个漫长的故事: 我创建了4位用户 我删除了1位用户 我尝试使用已删除的用户登录,并确保失败 我使用剩余的3个用户之一登录并确认我可以登录 我从一个用户向另一个用户发送一条消息,并验证该消息是否出现在发件人的发件箱和收件人的收件箱中。 我删除邮件 … … 优点:测试非常有效(非常善于检测错误)并且非常稳定,因为它们仅使用API​​,如果我重构代码,那么测试也

  • 大家好,我需要为我的方法编写单元测试。我有点麻烦,因为我是JUnit的新手。我需要为这个方法写一个测试。这是我的方法 我试过了,但我被挡了,这是我的结果 附言:测试通过了,但我不明白我的测试是不是真的

  • 我使用JUnit实现了一些单元和集成测试,如下图所示(这些测试都在同一个类中) 我正试图在詹金斯建立一个管道,为此我在gradle中添加了这个任务。生成(没有筛选器,因为我想运行所有测试) 在我的Jenkins管道中,我添加了这个阶段“测试”。我需要在后台添加什么来运行测试?

  • 根据前面的问题,我创建了一个静态编程语言Gradle项目。我向其中添加了两个源文件: 我还将目录src标记为源根,将测试标记为测试源根。 如果我在别处创建与这些源文件完全相同的目录结构,并围绕它创建一个非渐变IntelliJ项目,我就能够编译和运行这些代码,包括测试。 然而,在我的Gradle版本的项目中,我无法从IntelliJ IDEA构建测试。我发现以下错误: 奇怪的是,如果我在构建包装器后

  • 我有一个包含两个方法的类,每个方法都有一个try-catch块来查找任何异常。 代码如下: 我提出了一个测试用例,使用Mokito来测试上述场景,但不知道如何进入上述的catch块 我试图提出一个NullPointerException,但catch块仍然没有出现在CodeOverage中(我假设它没有经过测试)。请帮我写一个Junit测试用例来输入异常。我对所有这些话题都很陌生。

  • 我试图在Eclipse中对我的Spring Boot项目进行单元测试。我遇到的问题是,我的@Autowire s被忽略了。 输出。 我认为这可能与顶部没有@RunWith(SpringRunner.class)有关,但如果我包括这一点,它会尝试运行我的主应用程序,这会引发异常,因为实例变量不是从环境中填充的: 我不确定它为什么要运行这个,而我所做的只是测试。