JUnit测试骨架
使用JUnit时,主要都是通过继承TestCase类别来撰写测试用例,使用testXXX()名称来撰写单元测试。
用JUnit写测试真正所需要的就三件事:
1. 一个import语句引入所有junit.framework.*下的类。
2. 一个extends语句让你的类从TestCase继承。
3. 一个调用super(string)的构造函数。
下面针对求最大值函数编写测试用例:
1.简单测试:[7,8,9]->9;
2.位序测试:[9,8,7] ->9;[7,9,8] ->9;[8,7,9] ->9;
3.重复值测试:[9,7,9,8] ->9;
4.单值测试:[1]->1;
5.负值测试:[-7,-8,-9]->-7;
6.空值测试:[]->抛出异常;
测试类NumberToolTest:
public class NumberToolTest extends TestCase {
public NumberToolTest(String name) {
super(name);
}
public void testSimple() {
assertEquals(9, NumberTool.getMax(new int[] { 7, 8, 9 }));
}
public void testOrder() {
assertEquals(9, NumberTool.getMax(new int[] { 9, 8, 7 }));
assertEquals(9, NumberTool.getMax(new int[] { 7, 9, 8 }));
assertEquals(9, NumberTool.getMax(new int[] { 8, 7, 9 }));
}
public void testDups() {
assertEquals(9, NumberTool.getMax(new int[] { 9, 7, 9, 8 }));
}
public void testOne() {
assertEquals(1, NumberTool.getMax(new int[] { 1 }));
}
public void testNegitave() {
assertEquals(-7, NumberTool.getMax(new int[] { -7, -8, -9 }));
}
public void testEmpty() {
try {
NumberTool.getMax(new int[] {});
fail("Should have thrown an exception");
} catch (RuntimeException e) {
assertTrue(true);
}
}
}
Case 1:如果你只想执行某TestCase中的部分测试函数,则可自己构建TestSuite
做法:
下面的代码针对NumberToolTest中的两个测试函数testSimple()和testNegitave()进行测试。
import com.zj.c01.NumberToolTest;
import junit.framework.Test;
import junit.framework.TestSuite;
public class PartTest {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new NumberToolTest("testSimple"));
suite.addTest(new NumberToolTest("testNegitave"));
return suite;
}
}
Case 2:组合多个testCase一起来测试
public class NumberToolTest2 extends TestCase {
private int[] arr;
public NumberToolTest2(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
arr = new int[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };
}
protected void tearDown() throws Exception {
super.tearDown();
arr = null;
}
public void testMax() {
assertEquals(5, NumberTool.getMax(arr));
}
public void testMin() {
assertEquals(-5, NumberTool.getMin(arr));
}
}
做法:
下面会将NumberToolTest2和NumberToolTest一起来进行测试
public class CompositeTest {
public static Test suite() {
TestSuite suite = new TestSuite("Running all tests.");
suite.addTestSuite(MathToolTest.class);
suite.addTestSuite(NumberToolTest.class);
return suite;
}
}
注意:
每一个定义好的TestCase,都使用TestRunner
来运行测试,事实上TestRunner并不直接运行TestCase上的单元方法,而是通过TestSuite ,TestSuite可以将数个TestCase组合在一起。
在上面的例子中,并没有看到任何的TestSuite,这是因为TestRunner的run()方法中会建立TestSuite:
static public void run(Class testClass) {
run(new TestSuite(testClass));
}
分享到:
相关推荐
例如,在Eclipse中,右键选择待测试的类,新建JUnit测试用例,指定测试类名和根目录,IDE会自动生成基本的测试框架,包括`setUp()`和`tearDown()`方法,以及针对每个测试方法的骨架。 测试用例通常包含以下几个关键...
`junit.framework` 包含了 `TestSuite`、`TestCase`、`TestResult` 等核心类,它们共同构建了测试的骨架。`TestSuite` 用于组合多个 `TestCase`,形成测试集合。`TestCase` 是编写具体测试用例的基类,程序员通常...
最后,“junit”目录可能包含了JUnit库的jar文件,这是运行和编写JUnit测试的必需组件。开发者通常会将这个jar文件添加到项目的类路径中,以便能够使用JUnit提供的所有功能。 总的来说,"junit-4.5-SNAPSHOT-...
- **简化测试执行**:JUnit通过`TestCase`的`run()`方法简化了测试的执行流程,使用户只需关注测试逻辑本身。 - **避免硬编码**:通过使用Command模式,JUnit避免了在执行测试时的硬编码,使得测试更加灵活。 ...
5. 模板方法模式:`TestCase`类定义了一个模板方法,即`runTest()`,它是所有测试用例的骨架。子类可以重写`setUp()`和`tearDown()`方法,这些方法会在每个测试前后的固定时刻被调用,形成了一种模板方法模式。 6. ...
在NetBeans这样的IDE中,可以使用内置的插件自动生成测试类的骨架。对于PpProxy4JCoMMRFQ,我们创建了一个名为PpProxy4JCoMMRFQTest的测试类。这个类将包含一系列的测试方法,每个方法对应PpProxy4JCoMMRFQ类中的一...
在Humber College的课程设计模式与软件测试中,学生们被分配了一个名为"BankApplication-DesignPatternsAssignment"的任务,旨在将理论知识应用于实际项目开发,以构建一个具备图形用户界面(GUI)和JUnit测试用例的...
- **定义**: JUnit是一种用于Java编程语言的单元测试框架,属于xUnit测试框架家族的一员。 - **最新版本及特点**: - 最新版本(JUnit 4)引入了许多新特性,比如注解(@Before, @After, @Test等),这些注解简化了测试...
`maven-archetype-quickstart` 就是这样一个模板,用于创建一个简单的Java应用,包含一个主类和一个JUnit测试类。当我们使用`mvn archetype:generate`命令并指定这个archetype时,Maven会自动生成一个全新的项目结构...
在Appfuse中,我们可以创建一个名为DaoTest的JUnit测试类,该类将测试DAO的功能,包括插入、更新、查询和删除数据库记录。 4. **创建一个对对象执行CRUD操作的新DAO** CRUD代表创建(Create)、读取(Retrieve)、更新...
例如,JUnit中的`TestCase`类使用了模板方法模式,`runTest()`方法定义了执行测试的基本流程,而测试类只需覆盖`setUp()`和`tearDown()`等方法来准备和清理测试环境,而具体的测试逻辑则通过`@Test`注解的函数来实现...
锻造骨架用于建造Forge mods的骨架去做从字符串支持Curse ChangeLog(部分完成) Traar的Sonarqube和Jar签名支持Sonarqube和Jar签名支持CircleCI 秘密解析器也应该支持Gradle属性修复JUnit3,JUnit4和JUnit Vintage...
6. **自动化测试支持**:内置了 JUnit 测试框架的支持,帮助开发者进行单元测试和集成测试,确保代码质量。 #### 三、Appfuse框架的组成部分 Appfuse 主要分为以下几个部分: 1. **DAO(Data Access Object)层**...
在Android开发中,我们可以使用JUnit和 Espresso 进行单元测试和UI测试。对于四大组件,每个组件都有特定的测试策略。例如,Activity可以通过ActivityTestRule进行测试,Service则可以使用ServiceTestRule,而...
这是使用 maven、cucumber-jvm 和 selenium webdriver 的测试框架的骨架。 这遵循使用 PageFactory 实例化页面对象的页面对象设计模式。 这包含一个用于 BBC 网页演示目的的场景。 如何运行测试: 要在本地运行...
3. **测试骨架生成**:为每个可测试的单元创建基本的测试结构,包括设置、执行和断言部分。 4. **集成开发环境(IDE)集成**:与常见的IDE如Visual Studio、IntelliJ IDEA、Eclipse等集成,提供快捷的生成和运行测试...
- 对于测试,Spring Boot支持JUnit和Mockito等库进行单元测试和集成测试。 通过这个实例,初学者能够理解Spring Boot项目的基本构建和运行流程,以及如何利用IDEA和Maven工具来加速开发。学习并熟练掌握这些知识点...
8. **单元测试**:使用 JUnit 或 Spock 进行代码测试。 9. **文档**:如 README 文件,提供关于如何运行和使用项目的说明。 总的来说,这个工具是为了简化基于 LeeSite 的 Java Web 项目初始化过程而设计的,通过...
此外,开发过程中还会涉及到单元测试、集成测试,使用JUnit、Mockito等工具进行验证。持续集成和部署可能涉及Jenkins、Docker等技术。 总的来说,这个压缩包文件提供的是一个Java Web后端开发的基础框架,涵盖了...