如今,人们已经越来越意识到了测试对于软件开发的重要性,如今的软件开发已经形成了一套 单元测试 → 集成测试 → 系统测试 的流水线式的测试体系,其中的单元测试是在开发人员在开发的同时所进行的一向测试操作,他可以保证开发人员所开发的代码能够实现开发需求,并且大大的降低了项目中的bug被隐藏的可能性。

JUnit是一个优秀的Java单元测试工具,这里大致的介绍一下JUnit的使用方式。

首先要我们创建一个JUnit单元测试类,然后在类中我们可以通过实现各种方法来帮助我们对测试对象进行详细的单元测试。

JUnit 4 常用的几个annotation介绍:

  • @Before:初始化方法,在任何一个测试执行之前必须执行的代码;
  • @After:释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰 public void 方法;
  • @Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。
  • @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
  • @BeforeClass:针对所有测试,只执行一次,且必须为public static void;
  • @AfterClass:针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;

所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。

JUnit中常用的断言介绍:

  • assertEquals([String message],Object target,Object result)
    target与result不相等,中断测试方法,输出message
  • assertTrue/False([String message],Boolean result)
    Result为 false/true,中断测试方法,输出message
  • assertNotNull/Null([String message],Obejct result
    Retult= = null/result!=null,中断测试方法,输出message
  • assertSame/NotSame(Object target,Object result)
    Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
  • fail([String message])
    中断测试方法,输出message