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