轻松构建和运行多线程的单元测试

简介:随着多核处理器成为主流,开发并行程序随之成为一种必然要求。但是我们都知道并行程序存 在着很大的不确定性,这使得开发和测试并行程序有一定的难度,因此对于并行程序的单元测试变得尤为 重要。但是,创建多线程的单元测试并不容易,测试需要考虑测试线程间的同步,数据共享等。针对 Java 并行程序的测试,结合扩展 JUnit 的多线程测试工具,本文介绍了一种在集成开发环境中,创建符 合用户要求的多线程单元测试用例的完整过程,使得用户只用关心测试本身的逻辑和结果,而不用去了解 测试用例并行执行的琐碎细节,从而将大大方便并行程序员运行并行测试用例,提高并行程序的开发效率 和质量。

背景

并行程序

并行程序是指控制计算机系统中两个或多个分别包含一系列指令序列的操作同时执行的程序,是对处 理机上多个操作、或者任务同时执行的一种“规划”。处理机在运行并行程序时将同时工作于同一程序的 不同方面,同时控制和运行分别包含一系列指令的两个或多个操作。并行程序设计的主要目的是节省大型 和复杂问题的解决时间。

并行程序设计技术的发展已有 20 多年的历史了,高性能并行计算机系统正在进入越来越多的应用领 域。但是与硬件的发展相比,并行软件的发展则显得有些滞后,影响了硬件效率的发挥,限制了并行机系 统的广泛应用,因此并行程序的开发与研究也越来越多深入到现在软件的开发过程中。相比较串行程序的 开发,当前并行程序的开发与研究存在很多的困难,其中主要是因为缺乏有效的并行程序设计方法和工具 ,使得编写正确并行程序、理解并行程序的行为、调试和优化并行程序的性能都很困难。

单元测试

单元测试是对程序代码单元进行函数级的测试,是完成对最小软件设计单元的验证工作。

单元测试贯穿于软件开发的整个过程中,对于保证软件质量的重要性不言而喻。作为一种白盒测试, 单元测试很多时候是与开发同时进行的。关于单元测试的工具也很多,其中包含著名的 xUnit 系列。本 文将涉及到的多线程单元测试工具就是从 Java 单元测试工具 JUnit 中扩展而来的。

扩展 JUnit 实现多线程单元测试

对于 Java 来说,JUnit 是备受开发人员喜爱的单元测试工具。它甚至还影响了其他语言的测试框架 。这点,我们从繁多的 xUnit 框架就可以看出来。随着多核时代的到来,开发人员将需要进行越来越多 的并行程序测试。得益于 JUnit 的可扩展性,我们可以使用 Annotation 让 JUnit 更好地支持并行测试 。

得益于 JUnit 良好的可扩展性,扩展 JUnit 实现多线程单元测试这里主要是通过生成实现多线程测 试过程中所需 Annotation 的定义并实现运行自定义测试逻辑来实现的。

关于扩展 JUnit 实现多线程单元测试,我们在另一篇文章《扩展 JUnit 测试并行程序》里有专门的 介绍,下面我们将主要针对这一扩展说明如何在集成开发环境中创建和运行测试用例。

时间: 2024-11-01 20:42:14

轻松构建和运行多线程的单元测试的相关文章

通过NetBeans构建和运行Java PathFinder

Java PathFinder 是 NASA 项目的结果.它主要是在 NASA 软件模型研究中心开发的,现在仍然在使 用.Java PathFinder 项目是一个软件模型检查的可行性研究,开始于 1999 年.从那时起它便开始了通 往学术研究和工业之路,它甚至在实际太空船缺陷检测中也发挥过作用. Java PathFinder 是一个用来验证可执行 Java bytecode 程序的系统.它的基本形式是用作显式声明 软件模型检查程序的 Java 虚拟机 (JVM),从系统上探测程序所有可能的执

在构建之前运行前提条件以降低构建失败风险

简介 根据某个已定义事件(比如每晚构建或按需构建)运行一个构建过程是软件开发的习惯做法. 在大型软件构建中,可能需要花费几小时或者甚至是几天的时间完成构建.构建经常会失败.这在精益管理方 面是一个巨大的浪费.在云基础架构中运行此构建时尤其如此,在云基础架构中,是根据 CPU 使用情况来计 算成本的. 运行前提条件会降低构建失败的风险.在一些情况下,构建需要审批过程.这可能适用于 发布版本,因为如果发布版本包含不想要的更改,发布之后的恢复成本往往会很高,并且会增加另一种意想不 到的成本.因此,在运

通过NetBeans构建和运行Project Looking Glass

本文档演示了通过 NetBeans 启动和运行 java.net Project Looking Glass 的开发环境是非常容易的.正如您将在本文档中所阅读的一样,将 NetBeans 用作开发工具来构建和运行 Project Looking Glass 使 Project Looking Glass 开发非常简单. 入门 要入门,首先需要设置您的环境.验证环境设置正确之后,您将准备从 NetBeans 中构建和运行 Looking Glass. 平台要求 开始设置 Project Looki

银行取款[多线程]{未进行线程同步}(junit不适合多线程并发单元测试)

        由于计算机多任务.多进程.多线程的支持,使得计算机资源的服务效率提高,服务器对请求的也使用线程来相应,所有,代码中涉及到同时对共享数据的操作,将在 多线程环境中操作数据,导致数据安全问题.      经典例子:老婆(朱丽叶)老公(罗密欧),使用银行卡和存折,或者网银等,同时对同一账户操作的安全问题.      如果要保证多线程下数据安全,就要实现线程同步(例如:一间小厕所,就得有一个锁,保证同一时间为一个人服务).其他文章讲: 此处用多线程实现,同时取款的模拟实现,未进行线程同步

上云实践之使用VPN网关轻松构建混合云

在2017阿里云网络技术高峰论坛上,阿里云VPN网关产品经理奈玟分享主题<使用VPN网关轻松构建混合云>.奈玟,阿里云VPN网关产品经理,有七年的网络相关开发和设计经验,最开始是做传统网络路由器交换机的传统协议,2012年在传统交换机上实现了OpenFlow 1.0协议,由此开始转到云网络.本文介绍的内容包括混合云概念.混合云私网构建.VPN网关产品简介和应用场景以及VPN网关搭建混合云架构的实战演示. 混合云简介 十年前,几乎所有的IT企业都是选择自建IDC,但是自建IDC十分复杂且成本巨大

用 Docker 构建、运行、发布一个 Spring Boot 应用

本文演示了如何用 Docker 构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Docker 是一个 Linux 容器管理工具包,具备"社交"方面,允许用户发布容器的 image (镜像),并使用别人发布的 image.Docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 Spring Boot 应用程序. 有关 Docker 的详细介绍,可以移步至 <简述 Docker> 前置条件 JDK 1.8+ Maven

用 Docker、Gradle 来构建、运行、发布一个 Spring Boot 应用

本文演示了如何用 Docker.Gradle 来构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Docker 是一个 Linux 容器管理工具包,具备"社交"方面,允许用户发布容器的 image (镜像),并使用别人发布的 image.Docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 Spring Boot 应用程序. 有关 Docker 的详细介绍,可以移步至 <简述 Docker> 前置条件 JDK 1.8

3.0、Android Studio构建和运行应用

默认情况下,Android Studio可以通过简单的点击就会将新的项目部署到虚拟机或者物理设备中.在Instant Run的帮助下,你可以将更改的方法或资源文件直接推送到一个运行的app而无需构建一个新的APK,所以看起来像实时的. 构建和运行你的app,点击Run'app'.Android Studio会让你选择一个部署目标(一个虚拟机或者一个连接的设备),使用Gradle进行构建,构建完成后将部署到目标上. 如果你使用Android虚拟机来运行你的app,你需要有一个Android Vir

Java核心技术卷I基础知识2.5 构建并运行applet

2.5 构建并运行applet 本书给出的前两个程序是Java应用程序.它们与所有本地程序一样,是独立的程序.然而,正如第1章提到的,有关Java的大量宣传都在炫耀Java在浏览器中运行applet的能力.如果你对"过去的记忆"感兴趣,可以继续阅读下面的内容来了解如何构建和运行一个applet,以及如何在Web浏览器中显示:如果你不感兴趣,完全可以跳过这个例子,直接转到第3章. 首先,打开终端窗口并转到CoreJava/v1ch02/RoadApplet,然后,输入下面的命令:   图