软件测试

收藏 / 订阅

JUnit使用参数测试和一组测试软件

  参数测试

  作为替代阵列int a0,a1,a2喜欢,当测试加法assertEquals(3.0, h.add(1, 2), 0.1);相当于声明一个变量,要测试100个怎么办。

  所以,有了參数化測试,使用一个Collection收集全部的数据——加法时每一次測试须要的几个数据构成一组,n个组构成Collection。

  然后依照JUnit的使用方法要求,写出单元測试类。(偷懒一下,不想写被測试的业务类X了。

  以下的样例中如果要測试的方法是,推断一个数是否奇数。)

package myTest.param;

import java.util.Arrays;

import java.util.Collection;

import org.junit.Test;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

import org.junit.runner.RunWith;

import static org.junit.Assert.assertEquals;

@RunWith(Parameterized.class)//1.必须

public class ParametTestUnit {

private int input;

private boolean expected;//expected result

/**

* 2.public 构造器赋值一组測试数据

*/

public ParametTestUnit(int input,boolean expected ) {

this.input = input;

this.expected = expected;

}

/**

* 3.由@Parameterized.Parameters修饰一个

* public static Collection xxx()

*/

@Parameterized.Parameters

public static Collection data() {

return Arrays.asList(new Object[][] {

{ 1, true },

{ 3, true },//

{ 6, false },

{ 11, true },

{ 22, false },

{ 23, true }

});

}

/**

* 4.JUnit循环地使用各组数据

*/

@Test

public void testOdd() {

System.out.println("Parameterized Number is : " + input);

assertEquals(expected, input%2!=0);

}

}

  如今这个单元測试类编写完毕,可是在BlueJ中不可以直接执行它(不支持?)。自己写一个Main好了。

package myTest.param;

import org.junit.runner.JUnitCore;

import org.junit.runner.Result;

import org.junit.runner.notification.Failure;

public class Main {

public static void go() {

Result result = JUnitCore.runClasses(ParametTestUnit.class);

for (Failure failure : result.getFailures()) {

System.out.println(failure.toString());

}

System.out.println(result.wasSuccessful());

}

}

喜欢 (88) or分享 (0)
首页  上一页  12345678910  下一页 尾页 共73条记录 8/10

网友评论:7

  1. 小编 1年前 (2015-03-22) #5

    软件测试入门 :mrgreen:

留言主题 *

您的姓名 *

电子信箱:

电话号码:

请你留言: