1、 说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,心理面感到真的是惭愧。原来的所有测试,我都是通过在控制台打印输出语句看结果,这样就可以根据自己打印的信息自己去判断,如果是少量的打印语句,还好办,但是如果是多数,那就不好办了,有些时候在测试好后,发布的程序中一般都不包括打印语句,这样就会把测试好的程序的打印测试语句去掉。所谓,人无完全,程序也没有绝对不出错的,只是看条件而已,而以后如果再次出错的时候,自己又会一行行的去读代码,找逻辑,再去写打印语句,然后再删除掉,这样,个人感觉,小项目里面还可以使用,这种多半就是一两个人做,就算改起来也会好办。但是如果是大项目,那么就惨了,开发人员换了一批又一批,每个人都不知道对方做了些什么,还有些什么没有做,慢慢的去读代码,或者是还不如自己去写,这样就浪费时间。因为也做个几个项目,所以对这个也算有了一定的了解,既然要想做一个优秀的JAVA程序员,那么JNuit现在应该是一个比较好的测试工具。
下面是JUnit一些特性的总结:
1) 提供的API可以让你写出测试结果明确的可重用单元测试用例
2) 提供了三种方式来显示你的测试结果,而且还可以扩展
3) 提供了单元测试用例成批运行的功能
4) 超轻量级而且使用简单,没有商业性的欺骗和无用的向导
5) 整个框架设计良好,易扩展
2、 我现在用的是JNUIT4,我把ASSERT包中的一些比较难于理解的方法,写在这里:
assertTrue
public static void assertTrue(java.lang.String message,
boolean condition)
断言conditon为真,如果不是就抛出指定的异常错误message
Parameters:
message - 指定的或者是为空的断言错误
condition - 检测的条件
assertFalse
public static void assertFalse(java.lang.String message,
boolean condition)
断言conditon为假,如果不是就抛出指定的异常错误message
Parameters:
message - 指定的或者是为空的断言错误
condition - 检测的条件
fail
public static void fail(java.lang.String message)
用指定的信息去使一个测试失败
Parameters:
message - 指定的或者是为空的断言错误
See Also:
AssertionError
assertEquals
public static void assertEquals(java.lang.String message,
java.lang.Object expected,
java.lang.Object actual)
断言两个对象相对,如果不等,就用指定的信息抛出一个断言错误。如果expected或者是actual为空,他们认为是相等的。
Parameters:
message - 指定的或者是为空的断言错误
expected - 期待的值
actual - 实值的值
assertEquals
public static void assertEquals(java.lang.String message,
double expected,
double actual,
double delta)
用一个正误差,去断言两个双精度数或者是单精度数相对。如果不等,用指定的message抛出异常。如果expeted的值无穷大,那么些是精度就会被忽略。NaNs被认为相等:assertEquals(Double.NaN, Double.NaN, *)通过。
Parameters:
message - 指定的或者是为空的断言错误
expected - 期待的值
actual - 根据期待的值的实际值
delta - 在精度之内的期待值与实际值,被认为是相等的
下面两个方法没有搞懂
assertThat
public static <T> void assertThat(T actual,
org.hamcrest.Matcher<T> matcher)
assertThat
public static <T> void assertThat(java.lang.String reason,
T actual,
org.hamcrest.Matcher<T> matcher)
3、 //Assert包里面所有的方法
package junit.framework;
public class Assert
{
//
// Constructors
//
protected Assert() { }
//
// Methods
//
public static void assertTrue(java.lang.String p1, boolean p2) { }
public static void assertTrue(boolean p1) { }
public static void assertFalse(java.lang.String p1, boolean p2) { }
public static void assertFalse(boolean p1) { }
public static void fail(java.lang.String p1) { }
public static void fail() { }
public static void assertEquals(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
public static void assertEquals(java.lang.Object p1, java.lang.Object p2) { }
public static void assertEquals(java.lang.String p1, java.lang.String p2, java.lang.String p3) { }
public static void assertEquals(java.lang.String p1, java.lang.String p2) { }
public static void assertEquals(java.lang.String p1, double p2, double p3, double p4) { }
public static void assertEquals(double p1, double p2, double p3) { }
public static void assertEquals(java.lang.String p1, float p2, float p3, float p4) { }
public static void assertEquals(float p1, float p2, float p3) { }
public static void assertEquals(java.lang.String p1, long p2, long p3) { }
public static void assertEquals(long p1, long p2) { }
public static void assertEquals(java.lang.String p1, boolean p2, boolean p3) { }
public static void assertEquals(boolean p1, boolean p2) { }
public static void assertEquals(java.lang.String p1, byte p2, byte p3) { }
public static void assertEquals(byte p1, byte p2) { }
public static void assertEquals(java.lang.String p1, char p2, char p3) { }
public static void assertEquals(char p1, char p2) { }
public static void assertEquals(java.lang.String p1, short p2, short p3) { }
public static void assertEquals(short p1, short p2) { }
public static void assertEquals(java.lang.String p1, int p2, int p3) { }
public static void assertEquals(int p1, int p2) { }
public static void assertNotNull(java.lang.Object p1) { }
public static void assertNotNull(java.lang.String p1, java.lang.Object p2) { }
public static void assertNull(java.lang.Object p1) { }
public static void assertNull(java.lang.String p1, java.lang.Object p2) { }
public static void assertSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
public static void assertSame(java.lang.Object p1, java.lang.Object p2) { }
public static void assertNotSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
public static void assertNotSame(java.lang.Object p1, java.lang.Object p2) { }
public static void failSame(java.lang.String p1) { }
public static void failNotSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
public static void failNotEquals(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
public static java.lang.String format(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
}
可以看得出来,还是assertEquals () 用得最多了,这个也可能用得最常用的了。
4、下面是一个简单的示例:
被测试类:Calculator
package junit.classes;
public class Calculator {
public Calculator() {
}
public int add(int augend, int addend) {
return augend + addend;
}
public int subtration(int minuend, int subtrahend) {
return minuend - subtrahend;
}
}
非正规的测试类:TestCalculator
package junit.test;
import junit.classes.Calculator;
import junit.framework.TestCase;
import org.junit.Test;
public class TestCalculator extends TestCase {
Calculator calculator = new Calculator();
//用Test注释表示要测试的的单元
@Test
public void testAdd() {
int result = calculator.add(20, 50);
assertEquals(result, 70);
}
@Test
public void testSubtration() {
int result = calculator.subtration(50, 20);
//这里不对,要抛出一个异常
assertEquals("测试与结果不符",result, 20);
}
public static void main(String[] arg) {
TestCalculator ts=new TestCalculator();
ts.testAdd();
ts.testSubtration();
}
}
正规的测试方式:TestCalculator
package junit.test;
import junit.classes.Calculator;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
public class TestCalculator extends TestCase {
Calculator calculator = new Calculator();
public void testAdd() {
int result = calculator.add(20, 50);
assertEquals(result, 70);
}
public void testSubtration() {
int result = calculator.subtration(50, 20);
//这里不对,要抛出一个异常
assertEquals("测试与结果不符",result, 20);
}
//这个静态方法就是要获得测试的是那个类,必须为静态的
public static Test suite() {
//返回测试单元
//这里的测试单元就是当前类,当前类里面的所有函数
return new TestSuite(TestCalculator.class);
}
public static void main(String[] arg) {
//运行测试,任何JAVA程序要运行,都必须得有主函数
TestRunner.run(suite());
}
}
分享到:
相关推荐
junit4单元测试工具
单元测试之道(Java):使用JUnit进行单元测试。单元测试是提高代码质量的有效手段,但大部分开发人员由于种种原因都不乐意进行单元测试。
多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1] JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为...
Junit单元测试Junit单元测试Junit单元测试Junit单元测试
单元测试工具Junit的简单使用
用Junit进行单元测试
Junit单元测试Junit单元测试Junit单元测试Junit单元测试
Java语言是一个支持面向对象的语言,通常情况下我们可以将程序的一个单元看成是一个独立的类,因此进行单元测试的重点就是对这些类进行测试。 1、不需要测试get和set这样的行为 2、一个方法至少需要测试一次
junit3 junit4 api,单元测试的利器
在Eclipse中使用JUnit4进行单元测试!
简单介绍了Junit的安装过程与实例应用。应用的问题是软件测试中的佣兵问题,整个文档中有代码及测试结果,可以更好地帮助学生了解Junit单元测试中的作用。
使用JUnit进行单元测试PPT Spring 基于Aspectj 进行AOP编程的知识。 Aspectj快速参考文档
用Junit进行单元测试
junit单元测试junit单元测试junit单元测试
SpringBoot使用Junit进行单元测试,对如何在Springboot中使用Junit进行单元测试提供示例。
Junit主要应用于java的单元测试。 Junit是由Eric Gamma及Kent Beck编写的。 Kent Beck定义了XP方法论,这样XP也成了支持Junit的要素。 Kent Beck是第一本介绍极限编程的作者。 Junit在开发领域得到的评价: “在...
回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用 软件测试技术JUnit和单元测试入门简介 软件测试 1、几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的...
Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南
《单元测试之道Java版:使用JUnit》PDF 下载