单元测试工具(连载2)

简介: 单元测试工具(连载2)

1.2 JUnt4测试用例的运行和调试


写好产品代码和测试代码后,就可以运行测试程序了。只要在EclipseCalculatorTest类上单击鼠标右键,在弹出的菜单上选择“Run As a JUnit Test”运行测试用例,测试结果就显示出来了,如图4所示。


显然,减法没通过是由于代码中存在问题,而乘法没通过是由于乘法没有实现。首先来修改减法的函数实现:


publicvoid substract(int m,int n) {
        result =n-m;  //Bug: 正确的应该是result =m-n
}


再进行一次运行,结果如图5所示。

   

image.png

   4  JUnit单元测试结果(一)           5 JUnit单元测试结果(二)

最后完成乘法的产品代码与测试代码。产品代码如下:


publicvoid multiply int m,int n) {
    result=m*n
    }


测试代码如下:


publicvoid testMultiply() {
        calculator.multiply(8,2);
        assertEquals(16,calculator.getResult());
}


6为最后的测试结果。最终产品代码如下:

packageandycpp;
publicclass Calculator {
    private static int result; // 静态变量,用于存储运行结果
    public void add(int m,int n) {
        result = m + n;
    }
    public void substract(int m,int n) {
        result = m-n;     
    }
    public void multiply int m,int n) {
        result = m*n;
    }
    public void divide(int m,int n) {
        result = m / n;
    }
    public void square(int n) {
        result = n * n;
    }
    public void squareRoot(int n) {
        for (; ;) ;            //Bug : 死循环,为了后面介绍
    }
    public void clear() {     // 将结果清零
        result = 0;
    }
    public int getResult() {
        return result;
    }
}

image.png

6  JUnit单元测试结果(三)


而最终的测试代码如下:

packagecom.jerry;
importstatic org.junit.Assert.*;
importorg.junit.Before;
importorg.junit.Test;
importorg.junit.Ignore;
publicclass CalculatorTest {
privatestatic Calculator calculator = new Calculator();
@Before
publicvoid setUp() throws Exception {
calculator.clear();
}
@Test
publicvoid testAdd() {
        calculator.add(2,3);
        assertEquals(5,calculator.getResult());
}
@Test
publicvoid testSubstract() {
        calculator.substract(10,2);
        assertEquals(8,calculator.getResult());
}
@Test
publicvoid testMultiply() {
        calculator.multiply (8,2);
        assertEquals(16,calculator.getResult());
}@Test
publicvoid testDivide() {
        calculator.divide(8,2);
        assertEquals(4,calculator.getResult());
}
}


1.3  对基本代码的详细介绍


一个单元测试代码主要分为以下几个部分。

1)设置环境。

2)运行测试。

3)结果判断。

4)清理环境。


这里,设置环境和清理环境是有区别的。

设置环境:比如,建立数据库连接。

清理环境:比如,断开数据库连接。


1.包含必要的Package

importstatic org.junit.Assert.*;


assertEqualsAssert类中的一系列的静态方法,一般的使用方式是Assert. assertEquals(),但是使用了静态包后,前面的类名就可以省略了,使用起来更加方便。比如:


assertEquals(8,calculator.getResult());


显而易见,assertEquals函数的主要功能是实现“结果判断”。


2.测试类的声明

测试类是一个独立的类,没有任何父类。测试类的名字也可以任意命名,没有任何局限性。所以,不能通过类的声明来判断它是不是一个测试类。测试类与普通类的区别在于它内部方法的声明。


3.创建一个待测试的对象

要测试哪个类,要创建一个该类的对象。比如第1.1节和第1.2节中,为了测试Calculator类,必须创建一个Calculator对象。


privatestatic Calculator calculator = new Calculator();


4.测试方法的声明

在测试类中,并不是每个方法都用于测试,必须使用“标注”来明确表明哪些是测试方法。“标注”也是JDK5的一个新特性,用在此处非常恰当。可以看到,某些方法的前面有@Before@Test@Ignore@After等字样,这些就是标注,以一个“@”作为开头。第1.3节开始的描述的@Before@Test@After对应于。


1)标记@Before:设置环境。

2)标记@Test:运行测试。

3)标记@After:清理环境。


这个方法的前面使用@Test标注,表明这是一个测试方法。对方法的声明,也有如下要求:名字可以随便取,没有任何限制,但是返回的值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。


@Test
publicvoid testSubstract() {
        calculator.substract(10,2);
        assertEquals(8,calculator.getResult());
}


在测试方法中调用substract函数,将10减去2,期待的结果应该是8。如果最终的实际结果也是8,则说明substract函数是正确的,反之说明它是错的。


assertEquals(8,calculator.getResult()):用来判断期待结果和实际结果是否相等,第一个参数填写期待结果,第二个参数填写实际结果,也就是通过计算得到的结果。这样写好后,JUnit会自动进行测试,并把测试结果反馈给用户。


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:    

   分子作布朗运动的原因是由于原子、基本粒子也在作布朗运动,所以根本就无法测准粒子的动量与位置。根据狭议相对论E=MC^2,质量与能量是物质的两个属性,基本粒子有质量,与作布朗运动产生能量是一致的。(大物体也在作布朗运动,比如弹球,但由于质量太大,运动范围太小,我们用肉眼看不到)

目录
相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
1月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
180 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
48 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
2月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
61 2
|
2月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
2月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
260 2
|
2月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
2月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
133 1
|
3月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
56 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
3月前
|
jenkins 测试技术 持续交付
提升软件测试效率的实用技巧与工具
【10月更文挑战第12天】 本文将深入探讨如何通过优化测试流程、引入自动化工具和持续集成等策略,来显著提高软件测试的效率。我们将分享一些实用的技巧和工具,帮助测试人员更高效地发现和定位问题,确保软件质量。
79 2