天天看点

Java单元测试进阶之单元测试利器JUnit(新手上路)

如果你之前没有用过JUnit,那么赶紧按照一下步骤体验一下:

       以下步骤都是在Eclipse下操作的,如果你不是使用Eclipse,那么请自己适配一下。

1、新建一个Java工程

2、右键工程>properties>java build path>libraries>add library>JUNIT_HOME,选中后就可以使用JUnit了。

3、新建一个被测试的类,下面是第一部分讲的CoolClass

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

package  org.lhj.cool.junit;

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

public   class  CoolClass

Java单元测试进阶之单元测试利器JUnit(新手上路)

{

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public CoolClass()

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        super();

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public String reverseString(String inputStr)

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        if (null == inputStr)

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            throw new NullPointerException("Error:the input string is null.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        if ("".equals(inputStr))

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            return null;

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        int length = inputStr.length();

Java单元测试进阶之单元测试利器JUnit(新手上路)

        char[] outputChars = new char[length];

Java单元测试进阶之单元测试利器JUnit(新手上路)

        for (int i = 0; i < length; i++)

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            outputChars[i] = inputStr.charAt(length - i - 1); 

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        return new String(outputChars);

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public static void main(String[] args)

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        //set up the invironment

Java单元测试进阶之单元测试利器JUnit(新手上路)

        CoolClass testClass = new CoolClass();

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the null param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        try

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            testClass.reverseString(null);

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Error:expect throw nullPointerExceptioin but not.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        catch (NullPointerException e)

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Succeed:test the null param for reverseString succeed.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the "" param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        if (!(null == testClass.reverseString("")))

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Error:expect return the null value but not.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        else

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Succeed:test the "" param for reverseString succeed.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the "aaAA" param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        if (!"AAaa".equals(testClass.reverseString("aaAA")))

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Error:expect return AAaa but not.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        else

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Succeed:test the aaAA param for reverseString succeed.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the "AAaa" param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        if (!"aaAA".equals(testClass.reverseString("AAaa")))

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Error:expect return aaAA but not");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        else

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            System.out.println("Succeed:test the AAaa param for reverseString succeed.");

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //the other tests...

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //tear down the environment

Java单元测试进阶之单元测试利器JUnit(新手上路)

        testClass = null;

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

}

Java单元测试进阶之单元测试利器JUnit(新手上路)

4、在CoolClass右键>new >JUnit test Case,在对话框中输入类名即可,本次输入CoolClassJTest,点击确定,便生成了测试类。

5、编辑生成的类,加入测试代码后CoolClassJTest代码如下:

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

package  org.lhj.cool.junit.test;

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

import  junit.framework.TestCase;

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

import  org.lhj.cool.junit.CoolClass;

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

public   class  CoolClassJTest  extends  TestCase

Java单元测试进阶之单元测试利器JUnit(新手上路)

{

Java单元测试进阶之单元测试利器JUnit(新手上路)

    private CoolClass testClass;

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    protected void setUp() throws Exception

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        super.setUp();

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        testClass = new CoolClass();

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    protected void tearDown() throws Exception

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        super.tearDown();

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        testClass = null;

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public void testNullParamForReverseString()

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        try

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

            testClass.reverseString(null);

Java单元测试进阶之单元测试利器JUnit(新手上路)

            fail();

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

        catch (NullPointerException e)

Java单元测试进阶之单元测试利器JUnit(新手上路)

        {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        }

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public void testEmptyStringForReverseString()

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        assertNull(testClass.reverseString(""));

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

    public void testSimpleParamForReverseString()

Java单元测试进阶之单元测试利器JUnit(新手上路)

    {

Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the "aaAA" param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        assertEquals("AAaa", testClass.reverseString("aaAA"));

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //test the "AAaa" param

Java单元测试进阶之单元测试利器JUnit(新手上路)

        assertEquals("aaAA", testClass.reverseString("AAaa"));

Java单元测试进阶之单元测试利器JUnit(新手上路)
Java单元测试进阶之单元测试利器JUnit(新手上路)

        //the other tests...

Java单元测试进阶之单元测试利器JUnit(新手上路)

    }

Java单元测试进阶之单元测试利器JUnit(新手上路)

}

Java单元测试进阶之单元测试利器JUnit(新手上路)

上面用fail来进行是否抛异常的测试,如果没有抛异常就会fail;assertNull判断结果是否为null,如果不是就fail;assertEquals判断两个值是否相等。

一般常用的判断语句就以上几个,比if判断简洁多了,同时省掉了很多System.out.println语句。

6、保存后在Java编辑器右键>run as>JUnit Test

如果运行的测试都成功了,则会显示绿棒:

否则,红棒来了

在下面的failure trace你可以看到错误的原因,

双击第一行会弹出一下对话框

通过该对话框你可以知道出错的原因。