测试用例&测试套件
举个栗子:
|
MyStack类:
- public class MyStatck {
- private String[] elements;
- private int nextIndex;
- public MyStatck() {
- elements = new String[100];
- nextIndex = 0;
- }
- public void push(String element) throws Exception {
- if (nextIndex >= 100) {
- throw new Exception("数组越界异常!");
- }
- elements[nextIndex++] = element;
- }
- public String pop() throws Exception {
- if (nextIndex <= 0) {
- throw new Exception("数组越界异常!");
- }
- return elements[--nextIndex];
- }
- public String top() throws Exception {
- if (nextIndex <= 0) {
- throw new Exception("数组越界异常!");
- }
- return elements[nextIndex - 1];
- }
- }
对push方法编写测试:
- public void testPush(){
- MyStatck myStatck = new MyStatck();
- //测试用例中对方法抛出的异常进行try-catch处理。
- try {
- myStatck.push("Hello World!");
- } catch (Exception e) {
- Assert.fail("push方法异常,测试失败。");
- }
- String result = null;
- try {
- result = myStatck.pop();
- } catch (Exception e) {
- e.printStackTrace();
- }
- //验证断言压入的字符串是否为"Hello World!"。
- Assert.assertEquals("Hello World!", result);
- }
虽然testPush测试用例中调用了pop方法,但对pop方法仍要创建新的测试用例:
测试中是可以使用其他方法,不然就没法进行测试了
- public void testPop(){
- MyStatck myStatck = new MyStatck();
- try {
- myStatck.push("Hello World!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- String result = null;
- try {
- result = myStatck.pop();
- } catch (Exception e) {
- Assert.fail("pop方法异常,测试失败。");
- }
- //验证断言弹出的字符串是否为"Hello World!"。
- Assert.assertEquals("Hello World!", result);
- }
两个测试方法大致相同,但是侧重点不同。侧重对测试方法的断言判断。
每个test case只做一件事情,只测试一个方面。
随着项目的开发,类越来越多,测试也越来越多。单个测试的机械动作也会拖慢速度。那么就需要更简便的方法,只要点一下,就可以测试全部的测试用例——这种方法就是使用测试套件。
测试套件(TestSuite):可以将多个测试组合到一起,同时执行多个测试
创建测试套件约定:
- 在test源目录内创建测试类;
- 创建public static Test suite(){}方法。
贴代码
- public class TestAll extends TestCase {
- public static Test suite(){
- TestSuite suite = new TestSuite();
- suite.addTestSuite(CalcTest.class);
- suite.addTestSuite(DeleteAllTest.class);
- suite.addTestSuite(MyStatckTest.class);
- return suite;
- }
- }
运行结果如图: