【发布时间】:2011-07-18 19:25:49
【问题描述】:
我在 Java 环境中使用 eclipse。我必须将测试引入一个已经在进行的项目。如何开始?对类进行单元测试,还有什么?什么是这项工作的最佳工具(考虑到我使用的是 eclipse)?测试NG、JUnit、JTiger?
我如何让其他人适应使用这些测试?
提前致谢!
【问题讨论】:
标签: java eclipse testing project
我在 Java 环境中使用 eclipse。我必须将测试引入一个已经在进行的项目。如何开始?对类进行单元测试,还有什么?什么是这项工作的最佳工具(考虑到我使用的是 eclipse)?测试NG、JUnit、JTiger?
我如何让其他人适应使用这些测试?
提前致谢!
【问题讨论】:
标签: java eclipse testing project
Eclipse 对 JUnit 有很好的支持。这看起来是一个很好的起点。我将添加一个新的源目录 test 并创建一个镜像您的 src 文件夹的包结构。然后你可以一个一个地添加你的单元测试。祝你好运!
【讨论】:
除非您的团队已经习惯于编写测试,否则测试所有旧组件实际上并不可行(有时甚至不可行),因为编写可测试的软件需要特定的心态。
我认为,开始编写测试的最佳时机是,您可以定义一些新组件,这些组件足够重要,可以保证额外的努力,但又是新的,因此现有的代码库不会被测试太多。
通过这种方式,您可以找到一种测试方法,确定好处并学习心态,而无需在可能不适合您的团队的事情上投入太多精力。
关于工具:很遗憾,我无法真正比较不同的工具,因为我只有 JUnit 的经验。
JUnit 很容易上手,因为相应的工具已经包含在 Eclipse 中(创建模板、运行和评估选项的向导...),并且网上有大量的文档和示例。
【讨论】:
很多好问题。
如果您的项目根本没有测试并且已经在进行中,您应该逐步引入测试。当您必须为此功能开发新功能编写测试时,您将要更改的类和可能被破坏的功能。修复错误时也是如此。首先编写重现错误的测试,然后修复它。
我使用了 JUnit 和 TestNG。两者几乎相同。 TestNG 有组,即您可以将测试标记为属于开发、构建、集成等组。如果您有很多测试并且需要大量时间来运行它们,这主要是相关的。
你已经有自动构建了吗?如果不是从这里开始。如果您更喜欢使用 maven,它相对简单。当您的构建准备就绪时,编写几个单元测试(只是为了让某些事情失败......) 然后安装 Hudson/Jenkins 并在那里定义你的项目。人们会看到,一旦您提交新代码,构建几乎立即运行并且您会看到所有失败的测试,这是多么酷。可能会尝试向您的老板展示 TDD 的力量,并尝试向他解释他应该强迫所有团队成员编写测试。
如果您有足够的精力将 Sonar 介绍给您的公司。人们会看到他们编写的代码有多糟糕,测试覆盖率有多差。他们将看到测试覆盖率的增长速度,并且可能会在单元测试上投入更多。
很快,祝你好运。你是在正确的方式。
【讨论】:
JUnit 和 TestNG 都很好。 TestNG 的功能更多,有助于集成测试,而 JUnit 更专注于单元测试。
您可能想熟悉某种模拟库,例如 Mockito。 Cobertura 等代码覆盖工具和 Jenkins 等持续集成工具也很棒。
使用 Spring 或 Guice 等 DI 框架有助于编写更易于测试的代码。不管你是否使用 DI 框架,你的代码越松耦合就越容易测试。由于您的项目已经在进行中,因此这部分可能为时已晚,这将使您的任务更加困难。
很难让同事配合测试。您可能希望有选择地在可以发挥最大作用的部分上引入它。为已经完成的功能编写测试通常很痛苦,而且很浪费时间。测试应该很小,几乎没有依赖关系,易于理解,并且应该快速运行。编写测试、运行测试和修复损坏的测试越痛苦,你就会遇到越多的阻力。
【讨论】: