【问题标题】:How to introduce tests in an underway Java project?如何在正在进行的 Java 项目中引入测试?
【发布时间】:2011-07-18 19:25:49
【问题描述】:

我在 Java 环境中使用 eclipse。我必须将测试引入一个已经在进行的项目。如何开始?对类进行单元测试,还有什么?什么是这项工作的最佳工具(考虑到我使用的是 eclipse)?测试NG、JUnit、JTiger?

我如何让其他人适应使用这些测试?

提前致谢!

【问题讨论】:

    标签: java eclipse testing project


    【解决方案1】:

    Eclipse 对 JUnit 有很好的支持。这看起来是一个很好的起点。我将添加一个新的源目录 test 并创建一个镜像您的 src 文件夹的包结构。然后你可以一个一个地添加你的单元测试。祝你好运!

    【讨论】:

    • 我正在考虑使用 JUnit,因为它带有 Eclipse,但不想浪费时间,以防万一这是一个错误的决定。谢谢大家!
    【解决方案2】:

    除非您的团队已经习惯于编写测试,否则测试所有旧组件实际上并不可行(有时甚至不可行),因为编写可测试的软件需要特定的心态。

    我认为,开始编写测试的最佳时机是,您可以定义一些新组件,这些组件足够重要,可以保证额外的努力,但又是新的,因此现有的代码库不会被测试太多。

    通过这种方式,您可以找到一种测试方法,确定好处并学习心态,而无需在可能不适合您的团队的事情上投入太多精力。

    关于工具:很遗憾,我无法真正比​​较不同的工具,因为我只有 JUnit 的经验。

    JUnit 很容易上手,因为相应的工具已经包含在 Eclipse 中(创建模板、运行和评估选项的向导...),并且网上有大量的文档和示例。

    【讨论】:

      【解决方案3】:

      很多好问题。

      如果您的项目根本没有测试并且已经在进行中,您应该逐步引入测试。当您必须为此功能开发新功能编写测试时,您将要更改的类和可能被破坏的功能。修复错误时也是如此。首先编写重现错误的测试,然后修复它。

      我使用了 JUnit 和 TestNG。两者几乎相同。 TestNG 有组,即您可以将测试标记为属于开发、构建、集成等组。如果您有很多测试并且需要大量时间来运行它们,这主要是相关的。

      你已经有自动构建了吗?如果不是从这里开始。如果您更喜欢使用 maven,它相对简单。当您的构建准备就绪时,编写几个单元测试(只是为了让某些事情失败......) 然后安装 Hudson/Jenkins 并在那里定义你的项目。人们会看到,一旦您提交新代码,构建几乎立即运行并且您会看到所有失败的测试,这是多么酷。可能会尝试向您的老板展示 TDD 的力量,并尝试向他解释他应该强迫所有团队成员编写测试。

      如果您有足够的精力将 Sonar 介绍给您的公司。人们会看到他们编写的代码有多糟糕,测试覆盖率有多差。他们将看到测试覆盖率的增长速度,并且可能会在单元测试上投入更多。

      很快,祝你好运。你是在正确的方式。

      【讨论】:

      • 作为评论,我的工作团队将 Jenkins 作为 CI 工具。我认为从长远来看,这将使每个人受益。谢谢!
      【解决方案4】:

      JUnit 和 TestNG 都很好。 TestNG 的功能更多,有助于集成测试,而 JUnit 更专注于单元测试。

      您可能想熟悉某种模拟库,例如 Mockito。 Cobertura 等代码覆盖工具和 Jenkins 等持续集成工具也很棒。

      使用 Spring 或 Guice 等 DI 框架有助于编写更易于测试的代码。不管你是否使用 DI 框架,你的代码越松耦合就越容易测试。由于您的项目已经在进行中,因此这部分可能为时已晚,这将使您的任务更加困难。

      很难让同事配合测试。您可能希望有选择地在可以发挥最大作用的部分上引入它。为已经完成的功能编写测试通常很痛苦,而且很浪费时间。测试应该很小,几乎没有依赖关系,易于理解,并且应该快速运行。编写测试、运行测试和修复损坏的测试越痛苦,你就会遇到越多的阻力。

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        相关资源
        最近更新 更多