1.理解JUnit的作用
JUnit是单元测试的一个工具。举个例子来说:我写了一个验证用户输入的用户名密码是否正确的方法,那我要验证我写的方法是否是正确的,这就有了JUnit这个测试工具;有了这个工具,比如我登陆开发完了,接着又开发完退出的功能。这时你不敢保证在你开发退出功能的时候是否有影响到登陆功能,这时就可以再运行一下JUnit即可知道登陆功能是否能正常运行;
2.知道JUnit用在什么地方
我们验证用户是否可以登陆的步骤如下:收到用户输入的用户名和密码-->密码加密(数据库中的密码是经过加密的)-->拿去数据库查找用户名和密码是否是正确的-->告诉用户是否登陆成功;这样问题就来了。比如我写两个方法,一个是验证是否可以登陆(提供给页面调用的),一个方法是(把密码加密);那么我们只要写一个JUnit方法即可,就是需求里面要求的(验证用户是否可以登陆),它并不管你内部如果实现,JUnit只是传个用户名和密码给你,然后收到你方法的返回值,判断一下是否跟预期的值一样;
3.举个例子
类Tools.java//用于验证用户是否可以登陆,并返回true表示登陆成功false表示登陆失败MD5.java我就不写了。
public class Tools
{
public boolean embark(String userName, String password)
{
if (userName.equals("wangwz"))
{
if (MD5.toMD5(password).equals("856F794C4FB79CE50D35344F310A01A7"))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
再写一个测试的类ToolsTest.java //(命名最好统一,这样代码易维护)
import junit.framework.TestCase
public class TestTools extends TestCase //必须继承自这个类,测试用例编写时要考虑到边界,异常之类的情况,对每种情况都写个测试用例
{
private Tools tools;
private int result;
//该方法在测试的最前面运行
public void setUp()
{
this.tools = new Tools();
// 这里可以做一个获取连接之类的事
System.out.println("setUp");
}
//该方法是在每执行一次结束后都运行
public void tearDown()
{
// 释放连接
System.out.println("tearDown");
}
public void testEmbarkSucc()//这个就是测试用例,名称最好是这种形式test+方法名+状态(成功,失败)
{
result = tools.embark("wangwz", "wangwz");
assertTrue(result);//把结果拿来跟预期的值比较(因为传的是正确的,所以应该返回真)
}
}
如果使用Eclipse,则直接就可以运行ToolsTest.java了;
也可以在CMD下面运行JUnit测试类,首先得把JUnit的包设置进classpath,不过不能把包放到JDK目录下去(我机子上是这种情况的);然后进到ToolsTest.class的目录下,执行:java junit.textui.TestRunner 类名 即可看到结果
4.批量测试
如果每次去执行这些测试用例是非常麻烦的。所以可以写一个批量执行测试的类,内容如下:
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestAll extends TestCase
{
public static Test suite()
{
TestSuite testSuite = new TestSuite("TestSuite");
testSuite.addTestSuite(ToolsTest.class);
testSuite.addTestSuite(OperateTest.class);//这是另外的测试用例,可以加多个
return testSuite;
}
}
现在执行这个TestAll.java即可,运行方式同上;