您的位置:首页 > 其它

JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest

2013-04-07 21:43 549 查看

测试套件

  如果测试类写到很多,每次要进行测试,难道要重新点击每一个测试类来运行?如果有200个测试类要测试呢?

  为了解决这个问题,引入了测试套件(TestSuite)

  通过将多个测试放入套件中,一并执行多个测试。

实例:一次运行多个测试类

  比如,有两个测试类,叫CalculatorTest和CalculatorTest2。

  在测试类所在的包中新建一个类,叫做TestAll,如下:

package com.mengdd.junit;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestAll extends TestCase
{

public static Test suite()
{
// 创建一个测试套件
TestSuite suite = new TestSuite();

// 增加测试类的class对象
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(CalculatorTest2.class);

return suite;

}
}


  运行时,右键这个类,Run As ->JUnit Test:

CalculatorTest

package com.mengdd.junit;

import junit.framework.Assert;
import junit.framework.TestCase;

public class CalculatorTest extends TestCase
{

private Calculator calculator = null;

public CalculatorTest()
{
super();
}
public CalculatorTest(String name)
{
super(name);
}

@Override
public void setUp() throws Exception
{
System.out.println("set up");
// 生成成员变量的实例
calculator = new Calculator();
System.out.println(calculator);
}

@Override
public void tearDown() throws Exception
{
System.out.println("tear down");
}

public void testAdd()
{
int result = calculator.add(1, 2);
// 判断方法的返回结果
Assert.assertEquals(3, result);// 第一个参数是期望值,第二个参数是要验证的值
}

public void testSubtract()
{
int result = calculator.subtract(1, 2);
// 判断方法的返回结果
Assert.assertEquals(-1, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testMultiply()
{
int result = calculator.multiply(2, 3);
// 判断方法的返回结果
Assert.assertEquals(6, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testDivide()
{
int result = 0;
try
{
result = calculator.divide(12, 3);
}
catch (Exception e)
{
e.printStackTrace();

// 如果抛出异常,证明测试失败,没有通过,没通过的测试计数在Failures中
Assert.fail();
// 如果不加这一行,如果程序进入到catch,无法判断其失败
}
// 判断方法的返回结果
Assert.assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testDivideByZero()
{
Throwable tx = null;

int result = 0;
try
{
result = calculator.divide(12, 0);

Assert.fail("没有抛出异常,测试失败");// 如果执行到这行代码,则证明没有抛出异常,说明我们的验证失败
}
catch (Exception e)
{
e.printStackTrace();
tx = e;

}

Assert.assertEquals(Exception.class, tx.getClass());// 抛出的异常类型是否和期望一致
Assert.assertEquals("除数不能为0", tx.getMessage());// 抛出的异常信息是否和期望一致

//如果上面两个都通过,则测试通过

}

}


测试套件类:

package com.mengdd.junit;

import junit.extensions.RepeatedTest;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestAll extends TestCase
{

public static Test suite()
{
// 创建一个测试套件
TestSuite suite = new TestSuite();

// 增加测试类的class对象
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(CalculatorTest2.class);

// 测试某个方法多次,注意测试类需要提供带参数的构造方法
suite.addTest(new RepeatedTest(new CalculatorTest("testSubtract"), 20));

return suite;

}
}


运行结果:



参考资料

  圣思园张龙老师视频教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: