单元测试是单一实体(类或方法)的测试。
单元测试可以通过两种方式来完成:
手动测试 | 自动测试 |
---|---|
手动执行测试用例,没有任何工具支持称为手动测试。
|
以工具支持,并通过使用自动化工具则称为自动化测试执行测试用例。
|
JUnit是一个Java编程语言编写的单元测试框架。 重要的是在测试驱动开发中,并且是一个家族的统称为xUnit单元测试框架中的一个。
JUnit促进“先测试再编码”,它强调建立测试数据的一段代码可以被测试,先测试再编码实现的想法。这种做法就像是“试了一下,码了一点,测试了一下,代码一点点......”这增加了程序员的工作效率和程序代码的稳定性,减少程序员的压力和花在调试的时间。
Junit的特点:
-
JUnit是用于编写和运行测试的开源框架。
-
提供了注释,以确定测试方法。
-
提供断言测试预期结果。
-
提供了测试运行的运行测试。
-
JUnit测试让您可以更快地编写代码,提高质量
-
JUnit是优雅简洁。它是不那么复杂以及不需要花费太多的时间。
-
JUnit测试可以自动运行,检查自己的结果,并提供即时反馈。没有必要通过测试结果报告来手动梳理。
-
JUnit测试可以组织成测试套件包含测试案例,甚至其他测试套件。
-
Junit显示测试进度的,如果测试是没有问题条形是绿色的,测试失败则会变成红色。
JUnit是Java中最有名的单元测试框架。然而,它仅适合于纯粹的单元测试,对于集成测试应该使用TestNG来代替。
欢迎学习JUnit
一个单元可以是函数,类,包,或一个子系统。因此,术语:单元测试是指测试小单元做法代码,以便确保它们正常工作。例如,我们可以给予一定的输入测试输出是否是所希望看到那样,或者 if 的条件是真还是假。
这种做法可以帮助开发人员发现逻辑故障在代码中,以提高其代码的质量。另外,单元测试可以使用,以便确保代码将作为在未来变化预期的情况。
单元测试用例是代码的一部分从而确保代码(方法)的另一部分工作正常。要快速实现这些理想的效果,测试框架是必需的。JUnit对于Java编程语言是完美的单元测试框架。
正式书面单元测试用例的特征是众所周知输入和期望的输出,这是在执行测试之前制定的。已知的输入应该作为测试的前提条件以及预期输出应该为测试后置条件。
必须有至少两个单元测试用例针对每个要求: 一个正测试和负测试。如果要求有不合要求,每个子需求必须至少有两个测试用例作为正负。
JUnit4基本注释,下表列出了这些注释的概括:
注解 | 描述 |
---|---|
@Test public void method() |
测试注释指示该公共无效方法它所附着可以作为一个测试用例。 |
@Before public void method() |
Before注释表示,该方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件。 |
@BeforeClass public static void method() |
BeforeClass注释指出这是附着在静态方法必须执行一次并在类的所有测试之前。发生这种情况时一般是测试计算共享配置方法(如连接到数据库)。 |
@After public void method() |
After 注释指示,该方法在执行每项测试后执行(如执行每一个测试后重置某些变量,删除临时变量等) |
@AfterClass public static void method() |
当需要执行所有的测试在JUnit测试用例类后执行,AfterClass注解可以使用以清理建立方法,(从数据库如断开连接)。注意:附有此批注(类似于BeforeClass)的方法必须定义为静态。 |
@Ignore public static void method() |
当想暂时禁用特定的测试执行可以使用忽略注释。每个被注解为@Ignore的方法将不被执行。 |
下表中有一种最常用的断言方法的更详细的解释。
断言 | 描述 |
---|---|
void assertEquals([String message], expected value, actual value) | 断言两个值相等。值可能是类型有 int, short, long, byte, char or java.lang.Object. 第一个参数是一个可选的字符串消息 |
void assertTrue([String message], boolean condition) | 断言一个条件为真 |
void assertFalse([String message],boolean condition) | 断言一个条件为假 |
void assertNotNull([String message], java.lang.Object object) | 断言一个对象不为空(null) |
void assertNull([String message], java.lang.Object object) | 断言一个对象为空(null) |
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) | 断言,两个对象引用相同的对象 |
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) | 断言,两个对象不是引用同一个对象 |
void assertArrayEquals([String message], expectedArray, resultArray) | 断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object. |
what the fuck the junit is?!
waiting