最近需要向组内其他成员普及一下关于Java测试用例的相关知识,特在此进行一下简单的学习和总结。
JUnit简介
JUnit是一个开源的Java单元测试框架,JUnit4对原有的JUnit框架进行了大幅度的改进,主要目标便是利用了Java中的Annotation,来代替以前必须要继承AbstractTestCase,以及要测试的方法名称必须test为前缀。
JUnit4中提供了三个Annotation,用来控制整个测试的生命周期:
- @Before
相当与测试用例的初始化工作,在执行每个测试用例方法时,都会先执行该方法。
- @After
测试用例的清理工作在该方法中编写,在每个方法执行完成后,都会进行清理。
@Before和@After可以保证一些测试用例中的资源在这些方法执行,不会受到@Test方法执行顺序的影响。
- @Test
这个是实际的测试方法,会根据该方法中的断言语句(Assert)来进行测试用例的执行结果显示输出。
在@Test中,还有一些属性,这些属性都是非常有用的:
- expect=xxxx.class(extends Throwable)
如果我们在测试方法中能够预料到一些错误的发生,就使用该方法进行处理。有时候,一个函数抛出异常也许是你希望得到的结果。
- timeout=xxxx(一个毫秒值)
如果测试方法没有在指定的timeout时间内执行完成,该测试失败,这对于单元测试效率非常有帮助。
如果正在实践测试驱动开发,@Ignore可以暂时忽略掉一些已经定义但并没有实现的方法。
JUnit中有参数化测试的概念,只需要写一个测试函数,把若干种情况当成是参数传进去,进行测试即可。
类似下面的代码,就可以参数化的方式进行批量测试工作:
@RunWith(Parameterized.class) public class BelongToRegionFunctionTestCase { private BelongToRegionFunction function; private boolean expected; private int regionId; private int parentRegionId; @Before public void setUp() { function = new BelongToRegionFunction(); } @After public void tearDown() { function = null; } @Parameterized.Parameters public static Collection prepareData() { return Arrays.asList( new Object[]{true, 15, 8}, new Object[]{true, 105, 8}, new Object[]{false, 2, 8} ); } public BelongToRegionFunctionTestCase(boolean expected, int regionId, int parentRegionId) { this.expected = expected; this.regionId = regionId; this.parentRegionId = parentRegionId; } @Test public void testOldRegion() throws IOException { String filePath = this.getClass().getClassLoader().getResource("Region-000000000000000000000008-top100-new").getFile(); Assert.assertEquals(expected, function.evaluate(regionId,parentRegionId, filePath)); } @Test public void testNewRegion() throws IOException { String filePath = this.getClass().getClassLoader().getResource("Region-000000000000000000000008-top100-top100-top100-merge").getFile(); Assert.assertEquals(expected, function.evaluate(regionId,parentRegionId, filePath)); } }
Maven中运行JUnit
Maven本身不是一个单元测试框架,只是在构建执行到特定生命周期的时候,通过插件来执行JUnit的测试用例。这个插件就是maven-surefire-plugin,也成为Test Runner。
默认情况下,maven-surefire-plugin会执行测试源代码路径中的所有TestCase,路径为:src/test/java。maven中的test阶段是默认包含在一些阶段之前,也就是说package和install阶段都会默认先执行test,如果想要在package前跳过这个阶段,可以使用类似下面的命令:
maven package –DskipTests
如果不仅想要跳过测试运行,还需要跳过测试编译:
maven package –Dmaven.test.skip=true
如果在运行时某个测试用例执行失败,想要重新执行一次的时候,没有必要将所有的测试用例都跑一遍,仅需要执行部分的测试用例,maven-surefire-plugin提供了一个test参数可以让maven用户能够在命令行指定要运行的测试用例,可以使用通配符,以及加入多个Test类:
maven test –Dtest=Class*Test,Class2*Test
在idea中可以设置工程的Test Resources Folder,这样就可以在程序中用ClassLoader的getResource得到对应资源的路径和输入流,建议不要将测试使用的资源强行防至到对应的开发资源包中。
maven中可以定义测试资源的路径:
<build> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> </build>
相关推荐
Java测试用例工具是专为初级用户设计的一种简化测试案例管理的工具,旨在降低使用门槛,提高工作效率。本文将深入探讨这个工具的核心功能、应用场景、使用流程以及与“LLT”(可能指的是“Lightweight Low-Level ...
Java 测试用例 JUnit 教程 Java 是一种广泛使用的编程语言,而 JUnit 是 Java 测试框架中最流行的测试框架之一。JUnit 提供了一组丰富的断言方法,帮助开发者编写可靠的测试用例,从而提高代码质量。本教程旨在...
测试测试
以上就是MongoDB Java测试用例中的主要操作。实际应用中,可能还需要处理更复杂的查询,如使用索引、进行聚合操作等。同时,确保在操作完成后关闭MongoClient,以释放资源: ```java mongoClient.close(); ``` ...
Java测试用例是软件开发过程中不可或缺的一部分,它们用于验证代码的功能是否按照预期工作。在Java中,最常见的测试框架就是JUnit,这是一个专门为Java设计的单元测试框架。本篇将深入探讨JUnit 4,它是JUnit系列的...
### Java通用测试用例详解 #### 一、功能测试 功能测试是软件测试的重要组成部分,主要目的是验证软件的各项功能是否符合需求规格说明。对于Java应用而言,功能测试尤为重要,因为它直接关系到用户能否正常使用该...
"网上书店测试用例.doc" 通过对网上书店测试用例文档的分析,可以总结出以下知识点: 一、文档介绍 * 文档目的:本文档的目的是为了提供网上书店测试用例,指导测试人员进行测试。 * 文档围:本文档的范围涵盖了...
本篇主要围绕"Java测试很好的测试用例文档"展开,通过深入探讨测试用例设计、常用的Java测试工具以及测试策略,旨在证明Java应用程序的可测试性。 测试用例文档是测试过程中必不可少的部分,它详细记录了对软件功能...
在实际的Java测试用例中,我们通常会创建一个独立的类,这个类的方法对应于要测试的代码方法,并且方法名通常以"test"开头,比如`testFunctionName()`。 以下是一个简单的Java JUnit测试用例的例子: ```java ...
此测试用例文档,为本人几次项目的总结,包含了Web测试最基本的测试用例
通过本实验,我们学习了白盒测试和黑盒测试用例设计的方法,并使用Junit框架进行基于Java语言的单元测试。我们设计了多个测试用例,每个测试用例都可以检测程序的不同方面。通过本实验,我们提高了软件测试的技能和...
《微信小程序-Java测试用例(2024最全)》资源提供了一套详尽的小程序自动化测试用例,涵盖从基础UI操作到复杂业务场景的处理。该资源包含录制回放功能、数据驱动测试、原生控件处理以及API调用等全面内容,旨在提高...
在Java编程领域,JUnit是一个广泛使用的单元测试框架,它使得开发者能够编写可重复运行的测试用例,确保代码的质量和稳定性。"JUnit in Java:真正的测试用例实战"这一主题涵盖了如何有效地使用JUnit进行测试实践的...
《华山论剑之测试用例编写规范》 测试用例编写规范的目的是为了确保测试工作的有序、合理进行,提高测试质量,同时也为测试人员提供一个设计和管理测试用例的标准。规范的用途广泛,包括指导测试工作有序展开,确保...
中兴测试用例 中兴系统测试用例--JAVA
Java测试用例自动生成器,通常被称为Test Case Generator,是一种工具,它能够帮助开发者自动创建针对Java代码的测试用例。这种工具对于提高开发效率、确保代码质量以及遵循敏捷开发原则具有重要意义。在软件工程中...
1. **独立性**:测试用例应彼此独立,一个测试用例的失败不应影响其他用例。 2. **全面性**:尽可能覆盖所有可能的输入和边界条件,确保代码的各个分支都能被测试到。 3. **可重复性**:每次执行同一测试用例,应...
常见的单元测试框架有JUnit(Java)、pytest(Python)、NUnit(.NET)等,它们提供了丰富的API和功能来编写和执行测试用例。使用这些框架,可以轻松实现断言、测试套件组织、测试报告生成等功能。 五、最佳实践 1....