自动化测试单元测试报告

合集下载

基于JUnit自动化单元测试的研究

基于JUnit自动化单元测试的研究
d fe e tTe t a e n o t e Te t u t ,wh c a k h e t g t s er n a t ma ial .Th sa tcea a y e h p l if r n sc s s it h s S ie ih c n ma e t e t s i a k b u u o t l n c y i r il n l s s t ea p i —
软件 测试在软件质量控制过程中起着非 常重要 的作用 , 单元 测试 尤为重要 。J i是非常强大 的单元 测试工 Unt
具, 主要用于测试基于 jv 语言编写的类 和方法 , aa 而且它还 能把不 同的测试用例组 织成测试用 例集来进行 测试 , 使测 试运
行 自动化 。文章分析 了应用 J k单元测试方法以及使用 J k结合 An 构建工具来实现单元 自动化测试及增量开发 。 Un Un t
总第 2 4 4 期 2 1 年第 2 00 期
计算机与数字工程
Co u e mp tr& Dii lE gn e ig gt n ie rn a
Vo . 8 No 2 13 .
52
基 于 J nt自动 化 单 元 测 试 的 研 究 U i
白 凯 崔冬华
太原 002) 3 0 4 ( 太原理工 大学计算机与软件学院 摘 要
K y W ors J i,tsS ie e d Un t e tut ,An t
CIs a s N帅 b r TP 】 e 3]
1 引 言
软 件测试 是保 障软 件质量 的重 要手 段 , 这一 点
的约定编写 测试代 码 , 就可 以对 自己要测 试 的代 码
进行测试 。J i是 由 E i a a和 K n ek编 Unt r hG mm c et c B

自动化八大测试方法

自动化八大测试方法

自动化八大测试方法引言随着软件开发的快速发展,传统的手动测试方法已经无法满足软件质量和交付时间的需求。

自动化测试作为一种高效、准确、可重复的测试方法,被广泛应用于软件开发过程中。

本文将介绍自动化测试的八大方法,包括单元测试、集成测试、系统测试、性能测试、安全性测试、可靠性测试、易用性测试和兼容性测试。

1. 单元测试单元测试是对软件中最小的可测单元进行验证的过程。

它通常由开发人员编写,并针对代码中的函数或方法进行验证。

单元测试可以帮助开发人员及早发现并修复代码错误,确保代码质量和功能正确性。

常用的单元测试框架有JUnit和NUnit等。

2. 集成测试集成测试是将多个独立模块或组件组合在一起进行验证的过程。

它旨在检测不同模块之间的接口问题和协同工作问题。

集成测试可以帮助开发团队及时发现并解决模块之间的集成错误,确保整个系统正常运行。

3. 系统测试系统测试是对整个软件系统进行验证的过程。

它旨在确认系统是否满足用户需求和设计规范。

系统测试可以包括功能测试、性能测试、安全性测试等多个方面。

通过系统测试,可以确保软件系统在各种场景下都能正常运行。

4. 性能测试性能测试是对软件系统的性能进行评估和验证的过程。

它旨在检测系统在不同负载下的响应时间、吞吐量和资源利用率等指标。

性能测试可以帮助开发团队发现并解决系统的性能瓶颈,确保系统在高负载情况下依然稳定可靠。

5. 安全性测试安全性测试是对软件系统的安全性进行评估和验证的过程。

它旨在检测系统中存在的潜在安全漏洞和风险,并提供相应的修复建议。

安全性测试可以帮助开发团队加强对恶意攻击和数据泄露等威胁的防护,保护用户数据和隐私。

6. 可靠性测试可靠性测试是对软件系统的稳定性和可靠性进行评估和验证的过程。

它旨在检测系统是否具有足够的鲁棒性和容错能力,以应对各种异常情况和故障。

可靠性测试可以帮助开发团队发现并修复潜在的软件缺陷,提高系统的可靠性和稳定性。

7. 易用性测试易用性测试是对软件系统的用户友好程度进行评估和验证的过程。

【python自动化框架搭建】生成单元测试报告详细步骤

【python自动化框架搭建】生成单元测试报告详细步骤

【python⾃动化框架搭建】⽣成单元测试报告详细步骤'''要求:1、设计⾄少五条⽤例2、⾄少⽤两种⽅式往测试集合(套件)中添加测试⽤例3、执⾏测试集合(套件)中的测试⽤例,⽣成测试报告'''# 测试的代码# 设计⽤例,对此功能函数进⾏单元测试users = [{'user': 'python23', 'password': '123456'}]def register_test(username, password1, password2):# 注册功能for user in users: # 遍历出所有账号,判断账号是否存在if username == user['user']:# 账号存在return {"code": 0, "msg": "该账户已存在"}else:if password1 != password2:# 两次密码不⼀致return {"code": 0, "msg": "两次密码不⼀致"}else:# 账号不存在密码不重复,判断账号密码长度是否在 6-18位之间if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:# 注册账号users.append({'user': username, 'password': password2})return {"code": 1, "msg": "注册成功"}else:# 账号密码长度不对,注册失败return {"code": 0, "msg": "账号和密码必须在6-18位之间"}# data = ["test_0001", "12345678", "1234567"]# result = register_test(*data)# print(result)# 上⾯已经被注册的账号:python23# ⼊参三个:账号密码1 密码2# 账号未被注册过,两个密码⼀样才能注册成功,其他情况都注册失败,对应的结果如下:# 注册成功预期结果:{"code": 1, "msg": "注册成功"}# 两次密码不⼀致预期结果:{"code": 0, "msg": "两次密码不⼀致"}# 账户已存在预期结果:{"code": 0, "msg": "该账户已存在"}# 密码不在6-18位之间预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}# 编写测试⽤例# 导⼊unittest模块和注册模块函数import unittestfrom Day13_2020_03_04.pack01.homework_practice.register import register_testclass TestRegister(unittest.TestCase):"""账号注册类"""def setUp(self):# 每⼀条测试⽤例执⾏之前都会执⾏print("{}开始执⾏了".format(self))def tearDown(self):# 每⼀条测试⽤例执⾏之后都会执⾏print("{}执⾏完了".format(self))@classmethoddef setUpClass(cls):# 执⾏这个测试⽤例类中的测试⽤例之前会执⾏print("{}开始执⾏测试⽤例类执⾏完了".format(cls))@classmethoddef tearDownClass(cls):# 执⾏测试⽤例类全部执⾏完了,就会执⾏该⽅法print("{}执⾏测试⽤例类全部执⾏完了,就会执⾏该⽅法".format(cls))# 注册成功def test_register_pass(self):# ⼊参data = ["test_0001","12345678","12345678"]# 预期结果excepted = {"code": 1, "msg": "注册成功"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 对⽐预期结果和实际结果self.assertEqual(excepted, result)# 两次输⼊密码不⼀致def test_register_pwd_different(self):# ⼊参data = ["test_0001", "12345678", "1234567"]# 预期结果excepted = {"code": 0, "msg": "两次密码不⼀致"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 对⽐预期结果和实际结果self.assertEqual(excepted,result)# 账户已存在def test_username_already_exists(self):# ⼊参data = ["python23", "12345678", "12345678"]# 预期结果excepted = {"code": 0, "msg": "该账户已存在"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 对⽐预期结果和实际结果self.assertEqual(excepted,result)# 密码⼩于6位def test_register_pwd_6(self):data = ["test_0002", "12345","12345"]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)# 密码⼤于18位def test_register_pwd_18(self):data = ["test_0003", "12345909090990789098","12345909090990789098"]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)# 账号⼩于6位def test_register_username_6(self):data = ["test", "12345678", "12345678"]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)# 账号⼤于18位def test_register_username_18(self):data = ["test12345909090990789098", "12345678", "12345678"]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)# 账号为空def test_register_username_none(self):data = [None, "12345678", "12345678"]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)# 密码为空def test_register_pws_none(self):data = ["test_0004", None, None]# 预期结果excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}# 第⼀步:调⽤功能函数,传⼊参数(实际结果)result = register_test(*data)# 第⼆步:⽐对预期结果和实际结果是否⼀致self.assertEqual(excepted,result)"""添加:测试程序启动⽂件第⼀步:创建⼀个测试套件(unittest.TestSuite)第⼆步:将测试⽤例加⼊到测试套件中第三步:创建⼀个测试运⾏程序对象(unittest.TextTestRunner)第四步:通过运⾏程序,去执⾏测试套件中的测试⽤例"""from HTMLTestRunnerNew import HTMLTestRunnerimport unittestfrom Day13_2020_03_04.pack01.homework_practice import test_register_case# 创建测试套件对象suite = unittest.TestSuite()# # 第三种⽅法:将⼀个模块中的所有测试⽤例,加载到测试套件# loader = unittest.TestLoader()# # login_test_case 标黄不影响# suite.addTest(loader.loadTestsFromModule(test_register_case))# 第四种⽅法:通过⼀个⽬录,去导⼊改⽬录下的所有模块中的测试⽤例loader = unittest.TestLoader()# r防⽌转义,注意测试⽤例的模块名称,要以test开头suite.addTest(loader.discover(r"D:\project\class23\Day13_2020_03_04\pack01\homework_practice")) """stream:测试⽂件名字verbosity:title:报告的标题description:相关的描述tester:测试⼈员姓名"""runner = HTMLTestRunner(stream=open("report.html","wb"),verbosity=2,title="python第⼆份测试报告",description="注册类测试报告",tester="chen")# 第四步:通过运⾏程序,去执⾏测试套件中的测试⽤例runner.run(suite)输出测试HTML报告:。

如何进行前端代码的自动化测试和单元测试

如何进行前端代码的自动化测试和单元测试

如何进行前端代码的自动化测试和单元测试前端代码的自动化测试和单元测试,是现代软件开发中不可或缺的一环。

通过自动化测试,可以有效地提高代码质量,减少错误,增强稳定性,并且提升开发者的开发效率。

下面将介绍如何进行前端代码的自动化测试和单元测试。

一、为什么需要自动化测试和单元测试在软件开发过程中,前端代码是非常重要的一部分。

随着软件规模的扩大和功能的增多,手动测试变得困难且耗时。

而自动化测试和单元测试可以快速、准确地验证代码的功能和正确性。

通过测试框架和工具,我们可以编写一些测试用例,用这些用例来自动化验证代码的正确性和健壮性,从而提前发现和解决潜在的问题。

二、选择合适的测试框架和工具在进行自动化测试和单元测试之前,我们需要选择合适的测试框架和工具。

常见的前端测试框架有Jasmine、Mocha、Jest等,而工具方面可以选择Karma、Enzyme、Puppeteer等。

三、编写测试用例编写测试用例是进行自动化测试和单元测试的重要一环。

在编写测试用例时,我们需要考虑覆盖率、边界条件和正常情况。

通过编写全面的测试用例,可以有效地提高代码的稳定性和可靠性。

四、运行测试和生成报告一旦编写好测试用例,就可以运行测试并生成测试报告。

测试框架和工具提供了运行测试的命令行工具或者集成到持续集成环境(如Jenkins)中。

运行测试后,会生成详细的测试报告,可以清晰地展示测试结果,帮助开发者快速定位问题。

五、集成测试和持续集成除了单元测试,集成测试也是非常重要的一环。

在集成测试中,我们可以模拟用户的真实操作场景,综合测试各个模块之间的交互。

通过集成测试,我们可以更好地保证软件的整体质量。

持续集成是一种软件开发模式,是将代码的集成、构建、测试、部署等过程自动化进行,以实现快速、高效的软件交付。

六、测试驱动开发(TDD)测试驱动开发是一种先写测试用例,再写代码的开发模式。

通过测试驱动开发,可以更好地理清代码的逻辑和功能,以及提高代码的可测性。

单元测试与自动化测试的区别与实践

单元测试与自动化测试的区别与实践

单元测试与自动化测试的区别与实践软件测试是软件开发中非常重要的一个环节,其中单元测试和自动化测试是两种常用的测试方法,它们在测试的过程中有许多的不同点与共同点,下面我将对这两种测试方法进行一个简要的介绍,并讲述它们之间的区别和实践经验。

一、单元测试单元测试是指针对软件中的最小可测试单元进行测试,一般使用一个函数或一个模块作为被测试单元。

这个“单元”是代码的一部分,可以是方法、类、接口或其他一些组件。

单元测试的目的是在代码编写完成后,对代码进行系统测试,检查代码是否满足需求,同时对代码进行提前发现和修复问题,从而提高代码的质量,减少后期维护的成本。

在单元测试中,开发人员需要通过手动编写测试用例和测试代码来检查单元的正确性。

这些测试用例一般包括输入、输出和预期结果,测试代码会执行这些测试用例,并且验证测试结果是否与预期结果相符。

单元测试可以在开发周期的早期进行,从而避免整个软件项目中出现大量的缺陷和问题。

二、自动化测试自动化测试是指使用测试工具和脚本来控制测试过程,自动化测试可以减少测试周期并增加测试的精度。

与手动测试相比,自动化测试具有更高的测试覆盖率和更快的测试速度。

自动化测试是要求硬件和软件资源的,对于测试人员来说,掌握自动化测试技能可以提升工作效率和质量,同时也可以快速定位和修复bug。

在自动化测试过程中,开发人员需要编写测试脚本和使用自动化测试工具来自动执行测试用例。

一般而言,自动化测试包括接口测试、功能测试、UI测试等各种测试类型,如果合理使用,自动化测试可以有效增加测试项目的质量和效率。

三、单元测试和自动化测试的区别1. 测试短暂性单元测试一般是在编写代码的同时进行测试,测试短暂性有利于及早发现和解决问题,从而加速软件的开发。

自动化测试一般是在开发周期的末期或者软件的更新维护阶段进行测试,测试时长和对象会相对较长。

2. 测试用例单元测试用例相对更规范,因为单元测试是指对最小可测试单元进行测试,所以测试用例比较容易编写,同时又不需要太多的测试案例。

Junit单元测试-实验报告

Junit单元测试-实验报告

软件工程与计算Ⅰ实验报告实验名称: Junit单元测试实验分组号:实验人:陈燕珠班级: H13软件工程学号: _实验指导教师:陈国明实验场地:花都校区实验楼709实验时间: 2015、6、9成绩:实验四 Junit单元测试一、实验目的1.掌握白盒测试方法,并按单元测试的要求设计测试用例。

2.能熟练应用junit测试工具进行单元测试。

3.进行代码覆盖检查。

二、实验要求掌握系统测试的基本原理,按实验内容及步骤完成操作,完成实验报告,所有实验环节均由每位学生独立完成,严禁抄袭他人实验结果。

根据白盒法设计测试用例,并撰写单元测试计划书。

根据每个测试用例,编写基本Junit的单元测试脚本。

生成html格式的代码覆盖测试报告。

三、实验环境主流PC机一套,windows操作系统eclipse开发平台。

四、原理知识1.测试基本方法黑盒测试和白盒测试(1)黑盒测试(Black_Box testing)黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下、注重于测试软件的功能性要求,测试者在程序接口处进行测试,只检查程序功能是否按照规格说明书的规定正常使用,程序是否能接收输入数据而产生正确的输出信息,并且保持数据库和文件的完整性黑盒测试通常能发现以下几类错误:1、功能不对或遗漏2、界面错误3、数据结构或外部数据库访问错误4、性能错误5、初始化和终止错误采用黑盒技术设计测试用例的方法1、等价类划分2、边值分析法3、因果图4、猜错5、随机测试图1:白盒测试(2)白盒测试(White_Box testing)盒测试主要用于检查程序的内部结构、逻辑、循环和路径。

常用的白盒测试用例设计方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、符号测试法等。

其中最主要的方法就是逻辑覆盖法。

1、语句覆盖2、判定覆盖3、条件覆盖4、条件判定覆盖5、多条件覆盖图2:黑盒测试手工测试和自动化测试(1)手工测试手工测试有其不可替代的地方,因为人具有很强的判断能力,而工具没有,所以手工测试的不可替代性体现在以下几个方面:①测试用例的设计:测试人员的经验和对错误的判断能力是工具不可替代的;②界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的;③正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的。

软件(自动化)测试工作总结

软件(自动化)测试工作总结

软件(自动化)测试工作总结软件(自动化)测试工作总结201*年工作总结201*年自动化测试工作严格按照要求,保质保量完成客户指派的任务。

截止目前,已完成话费收取、账单查询、产品变更、营销活动等137项关键业务测试用例、105个自动化回归测试场景设计,范围涵盖个人业务、家庭业务、集团业务、账务管理、营销活动及各类常用查询功能。

陕西公司在大型版本上线时均进行关键业务自动化回归测试,降低了新版本上线风险,保证了新版本上线后关键业务和常用业务正常受理。

累计已进行新需求上线前后回归测试68次,运行业务脚本13100余次,发现系统原有缺陷38个,新需求缺陷69个,进行业务规则梳理146个,为新需求影响范围分析提供了数据依据,较大程度的提高了上线成功率,降低了上线后系统的缺陷率,提高了系统的稳定性。

从201*年5月份入职到现在的多半年时间内,主要对系统,业务的深入理解,学习。

对工作中所运用到得工具娴熟掌握,每次上线都能按照要求,独立完成安排的任务。

对自动化脚本进行重新整理改良,发现问题及时联系局方人员进行协商,处理。

主要工作内容是负责自动化测试这块,自动化测试的目的在于保障在新业务上线后,能正确的把控新上线内容对整个生产环境的影响。

确保在新业务上线过程中,及早发现关键业务的情况,判断其是否受到影响,同时确定新上线业务是否满足要求,达到预期的功能目的。

每次上线加班,严格按照要求进行测试,仔细记录测试中发现的BUG,当天寻找开发或相关负责人进行解决,每次按时到达工作现场,仔细对待工作,至今没有由于个人原因出现严重过错。

其他时间,对测试环境,测试数据和脚本进行维护,管理。

领导每次安排的任务仔细对待,按时保质完成。

工作中存在还需要以后改良的几点:1、对业务的熟悉度更进一步了解,拓展。

2、对脚本进行改良,创新,能够更全面的覆盖测试面,争取最大限度的找出问题所在。

3、在测试工具,软件,脚本等方面进行创新,提高测试正确度,测试效率,真正达到自动化测试的目的。

自动化单元测试概述

自动化单元测试概述

自动化单元测试概述杨学红中国联通研究院北京100032摘 要系统介绍当前比较流行的自动化单元测试软件,并指出现在的自动化测试工具在实际应用中的特点,为自动化单元测试工具的实际应用提供参考。

关键词自动化测试;单元测试;测试工具引言随着产品复杂性和软件规模的增加,软件测试也显得愈发重要。

影响软件测试效率的因素很多,除测试方法外,还有人为因素、软件类型、错误类型、测试充分度等。

据统计,测试会占到开发时间的40%,一个可靠性要求非常高的软件,测试时间甚至占到开发时间的60%。

实践证明,在一个采用程序正确性证明方法排除软件开发前期缺陷的项目中,单元测试可以发现整个软件开发过程15.75%的缺陷[1]。

软件测试可采用手工来完成,但其工作量巨大。

正是由于单元测试能够从缺陷发生的源头,找出软件中潜在的问题,提高软件的可信性,因此为了提高软件测试效率,出现了很多自动化的单元测试工具。

本文首先介绍手工测试和自动化测试的特点,然后对自动化单元测试技术进行分类,从静态和动态两个角度介绍了当前比较流行的自动化单元测试工具,最后对全文进行了总结。

1自动化测试的由来自动化测试是借助于测试工具和测试规范,局部或全部代替人工进行测试及提高测试效率的过程。

而单元测试的自动化将有效地提高软件开发的效率和软件的质量。

下面简单介绍一下手工测试与自动化测试。

1)手工测试的局限性。

手工测试即依赖测试人员自己手工完成测试的过程,具有一定的创造性,如可以实现举一反三的功能,从而覆盖特殊或边界情况。

但是手工测试的局限性也不断暴露出来,表现为:①仅通过手工测试很难判断是否覆盖了所有代码路径。

②功能测试的机械性、重复性增加了手工测试的工作量。

③很难发现与时序、死锁、资源冲突、多线程有关的错误。

④难以进行系统负载测试、性能测试及可靠性测试。

2)自动化测试的定义与重要性。

自动化测试是相对手工测试而言的,它依靠计算机去执行测试的过程,使用一种自动化测试工具来验证各种软件测试的需求,包括测试活动的管理与实施、测试脚本的开发与执行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院软件测试与自动化实习报告学院:信息工程学院班级:软件工程093姓名:罗念学号:2009012997成绩: 一、实习题目:Junit单元测试二、实习过程1、实验目的1)掌握Junit的安装及其与Eclipse的集成。

2)利用Junit进行单元测试。

2、实验步骤3)Junit的安装及其与Eclipse的集成。

(1)从下载Junit压缩包,把Junit压缩包解压到一个物理路径(例C:\junit4.8.2)(2)记录Junit4.8.2.jar文件所在目录。

(例c:\junit4.8.2\junit-4.8.2.jar )(3)设置环境变量CLASS_PATH,变量值为c:\junit4.8.2\junit-4.8.2.jar。

(4)在Eclipse菜单“project”的子项“properties”中选择“Java Build Path”,单击“Libraries”标签,添加External JARs,即选择junit.jar或junit-4.8.2.jar,单击打开,就完成了Junit的安装。

4)Junit单元测试实习题1:利用Junit Test Case生成测试用例的框架,在框架中设计测试代码,完成对getId(),setId(),getName(),setScore()函数的测试。

public class Student {private String id=null;private String name=null;private int score;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}}package JunitTest;import static org.junit.Assert.*;import org.junit.Test;public class StudentTest {Student stu = new Student() ;@Testpublic void testGetId() {String str = stu.getId() ;stu.setId("Hello") ;assertNull("this object is null", str) ;assertEquals("Hello", stu.getId()) ;// fail("Not yet implemented");}@Testpublic void testSetId() {stu.setId("Mr Luo") ;assertEquals("hello", stu.getId(), "Mr Luo") ;// fail("Not yet implemented");}@Testpublic void testGetName() {String str = stu.getName() ;stu.setName("Luo Nian") ;assertNull("this object is null", str) ;assertEquals(Luo Nian", stu.getName()) ;// fail("Not yet implemented");}@Testpublic void testSetScore() {stu.setScore(20) ;assertEquals("hello2", stu.getScore(), 20) ;// fail("Not yet implemented");}}测试结果截图:实验题2:实现教学示例中money类的加钱和判断钱数是否相等方法的测试。

package JunitTest;public class money {private int fAmount;//余额private String fCurrency;//货币类型public money(int amount, String currency) {fAmount= amount;fCurrency= currency; }public int amount() {return fAmount;}public String currency() {return fCurrency;}public money add (money m) {//加钱return new money(amount()+m.amount(), currency());}public boolean equals (Object anObject) {//判断钱数是否相等 if (anObject instanceof money) {money aMoney= (money)anObject;return aMoney.currency().equals(currency())&& amount() == aMoney.amount();}return false;} }测试类:package JunitTest;import static org.junit.Assert.*;import org.junit.Test;public class moneyTest {@Testpublic void testAdd() {money m12CHF= new money(12, "CHF"); //本行和下一行进行一些初始化money m14CHF= new money(14, "CHF");money expected= new money(26, "CHF");//预期的结果money result= m12CHF.add(m14CHF); //运行被测试的方法assertTrue(expected.equals(result)); }@Testpublic void testEqualsObject() {money m12CHF= new money(12, "CHF"); //本行和下一行进行一些初始化money m14CHF= new money(14, "CHF");assertTrue(!m12CHF.equals(null));//进行不同情况的测试assertEquals(m12CHF, m12CHF);assertEquals(m12CHF, new money(12, "CHF"));assertTrue(!m12CHF.equals(m14CHF));}}测试结果截图:实验题3:设计判断一个数是不是素数的程序,用基本断言类型实现测试,并用setup ()初始化测试环境。

package JunitTest;public class Primes {public int in;public int temp=0;public Primes(int in){this.in = in;}public int Division(int k1,int k2){if(k1%k2==0)return 0;elsereturn 1;}public int Primestest(int a){temp = a/2;for(int i=2;i<=temp;i++){if(Division(a,i)==0)return 0;}return 1;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubPrimes p1 = new Primes(13);int b = p1.Primestest(p1.in);if(b==0) System.out.println("这不是素数!");else System.out.println("这是素数!");}}测试类:package JunitTest;import static org.junit.Assert.*;import org.junit.After;import org.junit.Before;import org.junit.Test;public class PrimesTest {public Primes num13;public Primes num14;@Beforepublic void setUp() throws Exception {num13 = new Primes(13);num14 = new Primes(14);}@Afterpublic void tearDown() throws Exception {}@Testpublic void testPrimestest() {int result1 = num13.Primestest(num13.in);int result2 = num13.Primestest(num14.in);assertEquals(1,result1);assertEquals(0,result2);//fail("Not yet implemented");}}测试结果截图:三、实验总结:这次实验比较简单,首先理解了书本上用JUnit进行单元测试的方法后,就开始写相关的测试类,单元测试比较方便,由于用java开发,很多测试方法可以直接调用,整个实现起来比较方便,并且省去了很多手工测试的时间。

相关文档
最新文档