java中的Junit单元测试
什么是测试??
测试的分类??
黑盒测试:不需要些代码,给输入值,看程序是否能够输出期望的值
白盒测试:需要写代码,关注程序的具体的执行流程
Junit单元测试-百合测试
我们以前的测试:
要测试这个类的方法ok不
public class Calculator { public int add(int a,int b){ return a + b; } public int sub(int a,int b){ return a - b; } }
/** * 以前的测试: * 创建对象去一个个调用方法。 * 缺点: * 一个main方法只能测试一个功能,要注释掉之前的代码 */ public class CalculatorTest { public static void main(String[] args) { Calculator calculator = new Calculator(); int re = calculator.add(1, 23); System.out.println(re); int sub = calculator.sub(23, 1); System.out.println(sub); } }
使用junit测试方法框架后
/** * 步骤: * 1定义一个测试类(测试用例), * 测试类名=被测试的类名Test CalculateorTest * 测试类所在的包名:xxx.xx.xx.test cn.quan.test * 2定义测试方方法: * 方法名:test测试的方法名 testAdd() * 返回值:void * 参数列表:空参 * 3给方法加注解@Test---使方法独立运行 * 4判定结果: * 一般我们会使用断言操作来处理结果: * Assert.assertEquals(期望的结果,运算的结果) */
public class CalculatorTest { @Test public void testAdd(){ System.out.println("done"); Calculator calculator = new Calculator(); int add = calculator.add(1, 34); System.out.println(add); //断言 断言结果为 35 Assert.assertEquals(34,add); } @Test public void testSub(){ Calculator calculator = new Calculator(); int sub = calculator.sub(1, 4); System.out.println(sub); Assert.assertEquals(-3,sub); } }
运行第一个测试结果:---断言不成功
运行第二个测试结果:---断言成功
@Before
修饰的方法会在测试方法之前被自动执行
@After
修饰的方法会在测试方法执行之后自动被执行
例子:
public class CalculatorTest { /** * 初始化方法: * 用于资源申请,所有测试方法在执行之前都会先执行方法 */ @Before public void init(){ System.out.println("统一开始"); } /** * 释放资源: * 在所有测试方法执行完后,都会自动执行改方法 */ @After public void close(){ System.out.println("统一结束了"); } @Test public void testSub(){ Calculator calculator = new Calculator(); int sub = calculator.sub(1, 4); System.out.println(sub); System.out.println("Test指定之中"); Assert.assertEquals(-3,sub); } }
输出结果:
统一开始 -3 统一结束了