2011-01-12 72 views
0

我现在正处于对Java编程/开发有相当好理解的阶段。进入测试阶段

任何人都可以告诉我开始使用测试软件包的最佳方式吗?我已经看过休眠但不知道该去哪里...

我在Mac OS X上使用Eclipse 3.5。它是编写脚本来测试方法的一种情况吗?什么是单元测试?等等。

我从哪里开始?

非常感谢。亚历克斯

回答

4

什么是单元测试

Unit testing正在编写代码(即测试代码),其通过下测试已知输入到代码,然后验证下预期产出测试返回的代码。这是您可以在应用程序上执行的最细化的测试。为了更容易,通常使用单元测试框架。对于Java,JUnit是最流行的,但TestNG也是值得注意的。

入门

的单元测试框架执行测试,验证和结果报告提供工具。为您的设置,Eclipse has built in support for JUnit。 Eclipse能够自动检测测试,编译测试和测试代码,执行测试并在IDE中报告结果。此外,故障报告为可点击的堆栈跟踪信息,用于加载相应文件的给定行号。

mock对象

,你还使用Hibernate,建议你也调查a mock object framework以及 - 如jMock。模拟对象通常被作为代码的一部分被替换为测试的组成部分,并且有两个目的:(1)返回已知输出和(2)记录它们已被调用,以及单元测试如何使内部信息作为验证的一部分进行反思。

使用模拟对象来简化测试的能力取决于dependency injection。那是构成被测对象的其他实体。这个想法是解耦依赖关系(例如Hibernate),专注于测试操作您正在使用的数据的算法。

数据库

但是,如果你有代码,不容易refactored,或者你想验证数据库代码,还可以测试休眠的交互。在这种情况下,你需要一个处于已知状态的数据库。想到三种方法:

  1. 在每次测试执行开始时恢复数据库备份。
  2. 使用dbunit,它提供了自己的维护状态机制。
  3. 带回滚的事务锁定。整个包裹包裹着一个try{} finally{},后者总是回滚事务。
+0

我不使用Hibernate,我认为这是一个测试框架...我认为JUnit虽然是前进的道路,但.. – Alex

+0

@AlexW:gotcha。注意到,在开始编写测试时,理解模拟对象和依赖注入(DI)仍然是非常有用的部分。有时,单元测试新手最大的问题是处理数据库(例如,我有两条记录,现在我有三条记录!)。 Mocks和DI允许您先测试算法,然后再回来测试数据如何移入和移出数据库。 – orangepips

+0

更新为答案......谢谢。 – Alex

1

首先:Hibernate不是测试包。

现在已经不存在了,我建议你看看JUnit。首先阅读单元测试,以便知道它是什么(维基百科条目是一个很好的起点),然后尝试JUnit食谱。为小部分代码编写一些单元测试,看看它是如何工作的,然后转向更大的块。当你在这里时,看看其他开发工具,如Cobertura(用于发现你的测试覆盖率有多好)以及Findbugs和Checkstyle等静态分析工具。这些都与Ant很好地集成,也可能与Eclipse集成。

如果您有兴趣改进编码标准和构建系统,那么我强烈建议您使用Ant,JUnit,Cobertura,Checkstyle和Findbugs以及持续集成服务器(例如Hudson或CruiseControl)和版本控制系统(例如git )。有了这样的工具箱,你就不会出错。

还有其他的框架存在(TestNG的,的Mockito等),所以来看看他们,也和决定你喜欢(编辑:并很好地协同工作的Mockito + JUnit是一个不错的组合。)

1

虽然有很多方法可以开始测试了,没有“最好”的方式,以便有一个在寻找,作为一个出发点是没有意义的。

在网上搜索关于junit的一个很好的教程,并做到这一点。这将是开始IMO的绝对最佳途径。不要偏离代码覆盖范围或与Hudson或任何其他外围测试任务集成。如果首先进行测试,请着重写几个(或10个)。

一旦您了解了基本知识,就可以开始查看其他工具,以查看它们是否比junit更好或更差地满足您的需求。

相关问题