用TestSuite管理Junit单元测试用例
因为在测试过程中可能不能同时run所有的测试用例,或者是想同时run不同的测试用例或所有的用例,那么我们就要维护一个公共的Suite,这个Suite可以添加TestSuite或一个单个用例(测试函数)。
TestCase->TestSuite,Testmethods->TestSuite
举例说明:
package calculor.Calculor;
import static org.junit.Assert.*;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class CalcTest extends TestCase {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testAdd() {
//fail("Not yet implemented");
assertEquals(2, 2);
}
}
另外一个TestCase集合类
package calculor.Calculor;
import static org.junit.Assert.*;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class TTmmTest extends TestCase {
public TTmmTest(){}
public TTmmTest (String name){
super(name);
}//注意这里添加了这个构造函数,因为要调用父类的构造函数,用于下面Suite添加该类的测试方法
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testHelloworld() {
//fail("Not yet implemented");
assertEquals(2,2);
}
}
那么我们就可以对这两个不相关的测试类集合进行包装,就是建立一个TestSuite类,封装这些不相关的类,这对于我们大的项目来说是非常关键的,因为我们可能同时维护很多测试类,run回归测试用例等。
package calculor.Calculor;
import junit.framework.Test;
import junit.framework.TestSuite;
//import junit.sampling.*;
public class TestAll {
public static Test suite()
{
TestSuite suite =x new TestSuite("All tests from part1");//表明这个标识性东西
suite.addTestSuite(TTmmTest.class);
suite.addTestSuite(CalcTest.class);
suite.addTest(new TTmmTest("testHelloworld"));//这里可以添加单个的测试方法
return suite;
}
}
Tips:我们看到我们实际上增加了一个Test类,实际上Testsuite,TestCase都是实现了Test接口。
创建过程:TestRunner一开始现寻找测试类中的suite方法,找到了就加入testsuite
注意在编写测试用例的时候,要保持测试用例的独立性
一个原则,每条单元测试用例都必须独立运行,不能依靠其他测试用例,或者不能按照什么顺序运行才可以。如果依靠其他测试用例的话,会给调试带来非常大的麻烦,所以这点一定要记住。
貌似目前项目用到的Eclipse中新建Test Suite的向导是针对Junit3的,而且网上很多资料介绍Test Suite也都是Junit3的,这里简要介绍一下Junit4中Test Suite的使用方法。
一种是类似Junit3的方法:
import junit.framework.JUnit4TestAdapter;
import junit.framework.Test;
import junit.framework.TestSuite;
Junit3中是直接suite.addTest(Test1.class),Junit4中需要用JUnit4TestAdapter来转换一下。TestSuite中也可以添加TestSuite,方法是一样的,即suite.addTest(new JUnit4TestAdapter(TestSuite2.class));
另一种是使用标注的方法:
import junit.testcase.JUnitTestCase;
import junit.testcase.TestCase2;
import org.junit.runner.RunWith;
来看看一个例子:
在这个例子中,您并没有看到任何的TestSuite,事实上,若是您没有供给任何的TestSuite,TestRunner会本身建树一个,然後这个 TestSuite会应用反射(reflection)主动找出testXXX()办法。
若是您要自行生成TestSuite,则在持续TestCase之後,供给静态的(static)的suite()办法,例如:
return new TestSuite(MathTool.class);
}
若是您没有供给任何的TestSuite,则TestRunner就会像上方如许主动为您建树一个,并找出testXXX()办法,您也可以如下面定义 suite()办法:
TestSuite suite = new TestSuite(MathTool.class);
suite.addTest(new MathToolTest("testGcd"));
return suite;
}
JUnit并没有规定您必然要应用testXXX()如许的体式格式来定名您的测试办法,若是您要供给本身的办法(当然JUnit 激劝您应用testXXX()如许的办法名称),则可以如上撰写,为了要可以或许应用建构函式供给测试办法名称,您的TestCase必须供给如下的建构函 式:
super(testMethod);
}
若是要参加更多的测试办法,应用addTest()就可以了,suite()办法传回一个TestSuite物件,它与 TestCase都实作了Test介面,TestRunner会调用TestSuite上的run()办法,然後TestSuite会将之委托给 TestCase上的run()办法,并履行每一个testXXX()办法。
除了组合TestCase之外,您还可以将数个TestSuite组合在一路,例如:
TestSuite suite= new TestSuite();
suite.addTestSuite(TestCase1.class);
suite.addTestSuite(TestCase2.class);
return suite;
}
如此之来,您可以一次运行所有的测试,而不必个此外运行每一个测试案例,您可以写一个运行全部测试的主测试,而在应用TestRunner时呼唤 suite()办法,例如:
TestCase与TestSuite都实作了Test介面,其运行体式格式为 Command 模式 的一个实例,而TestSuite可以组合数个TestSuite或TestCase,这是 Composite 模式 的一个实例。
相关推荐
每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。 添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持。 4 测试方法注意事项 必须是public修饰的,...
NULL 博文链接:https://huihai.iteye.com/blog/1994270
单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不...先看一个Junit3的样例如果采用默认的TestSuite,则测试方法必须是publicvoidtestXXX()[throwsExceptio
以上部分与我们平常使用IDE调试的过程是完全一样的,只不过是增加了测试用例管理、测试结果检测等功能,提高了单元的效率,保证了单元测试的完整性,明确了单元测试的目标。 以上4大功能,在JUnit的框架中是如何实现...
引言编写Mock类将测试数据保存到配置文件中编写SettersMap类编写可复用的TestCase类用TestSuite组织测试用例总结下载参考资料“规则”(Rule)在程序中有广泛的应用,本文将介绍在对“规则”进行单元测试(Unit...
unittest是Python单元测试框架,类似于JUnit框架。 unittest中有4个重要的概念:test fixture, test case, test suite, test runner Testcase: 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个...
什么是单元测试 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 比如对于函数abs(),我们可以...unittest中最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture (1)一个T
内容实际Java开发中单元测试常遇到的问题JUnit4的新特性和扩展机制JUnit4扩展的实现通过测试用例实例展示JUnit扩展的执行效果结论参考资料简介: 在采用测试驱动开发的项目中,有一个经常困扰开发者的问题是:当...
Google 移动服务(GMS)是一家集了 Google 的Android应用程序框架提供的应用和服务。GMS的测试套件(GTS)是一个自动化...作为JUnit测试和封装成一个Android apk文件到运行在实际设备上的目标是用Java编写的测试案例。
把一个或多个测试套件(TestSuite)组织成项目,每个测试套件包含一个或多个测试用例(TestCase),每个测试用例包含一个或多个测试步骤,包括发送请求、接受响应、分析结果、改变测试执行流程等。 SOAPUl是由标准...
单元测试框架一种用于Roku频道的自动化测试套件的工具。范围以下框架允许开发人员运行单元测试并收集通道错误。当前实施当前的实现由Test Runner组成,Test Runner收集所有测试用例并逐个运行它们; Base Test Suite...
修复协议测试套件 用于 FIX 协议引擎的用例测试套件。
就像JUnit是Java语言的标准单元测试框架一样,unittest(PyUnit)则是Python语言的标准单元测试框架。unittest可以组织执行测试用例,并且提供了丰富的断言方法,可以判断测试用例是否通过,最终生成测试结果。用...
Testsuite.py 是 NavigateAmazon 项目所有测试的编译,聚合所有测试用例。 通过运行此测试套件,已导入其中的所有其他测试都将被执行。 测试用例,以及它们测试的场景: test_Login.py:在会员登录系统时测试 ...
这是什么? 我主要使用Java编写各种有用的代码段和勇敢尝试的库。... 一些代码随src / test / java文件夹中的简单JUnit测试用例一起提供。 通常,我会去图书馆看一本新书,试图从中汲取一些想法,并在此
.test case 和testsuite的区别? test case是一个用例 test suite是一组用例 7.selenium IDE, selenium core, selenium core hta, selenium rc四者的概念以及它们之间的区别? selenium IDE(集成开发环境)。它...