这是待测试的类,有加减乘除等功能
package com.sd; //Calculator.java public class Calculator { private static int result; public void add(int n){ result = result + n; } public void substract(int n){ result = result - 1;//故意写错,应为result-n } public void mutiply(int n){ //此方法未写好 } public void divide(int n){ result = result/n; } public void square(int n){ result = n*n; } public void squareRoot(int n){ for(; ;);//死循环 } public void clear(){ result = 0; } public int getResult(){ return result; } }
使用eclipse在项目中构建路径中引入JUnit4的包,然后在项目中新建testcase即可,修改生成的代码完成测试
代码的编写,run即可。
//CalculatorTest.java
package com.sd;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {

    //为了测试Calculator类,我们必须创建一个calculator对象。
    private static Calculator calculator = new Calculator();
    
    //Calculator对象进行一个“复原”操作,以消除其他测试造成的影响。
    //因此,“在任何一个测试执行之前必须执行的代码”就是一个Fixture,
    //我们用@Before来标注它
    
/*    如果我们使用 @Before 和 @After ,
    那么每次测试都要读取一次文件,效率及其低下。
    这里我们所希望的是在所有测试一开始读一次文件,
    所有测试结束之后释放文件,而不是每次测试都读文件。
    JUnit 的作者显然也考虑到了这个问题,它给出了
    @BeforeClass 和 @AfterClass 
    两个 Fixture 来帮我们实现这个功能。
    从名字上就可以看出,用这两个 Fixture 标注的函数,
    只在测试用例初始化时执行 @BeforeClass 方法,
    当所有测试执行完毕之后,执行 @AfterClass 进行收尾工
    作。在这里要注意一下,每个测试类只能有一个方法被标注为
    @BeforeClass 或 @AfterClass ,并且该方法必须是
    Public 和 Static 的。 */

    
    @Before
    public void setUp() throws Exception {
        calculator.clear();
    }

    
    @Test
    public void testAdd() {
        calculator.add(3);
        assertEquals(3,calculator.getResult());
    }


    @Test
    public void testSubstract() {
        calculator.substract(2);
        assertEquals(1,calculator.getResult());
        
    }

    @Test
    public void testMutiply() {
        fail("Not yet implemented");
    }

    @Test
    public void testDivide() {
        calculator.add(8);
        calculator.divide(2);
        assertEquals(4, calculator.getResult());

    }
    
       @Test(timeout  =   1000 )
       public   void  squareRoot()  {
         calculator.squareRoot( 4 );
         assertEquals( 2 , calculator.getResult());
     } 
       //除 0 异常
       /*标注的expected
       属性,将我们要检验的
       异常传递给他,这样JUnit
       框架就能自动帮我们检测是否抛出了我们指定的异常*/
       @Test(expected = ArithmeticException.class)
       public void divideByZero(){
           calculator.divide(0);
       }

    
    

}