单元测试

C/C++单元测试问答(摘要)

瘦欲@ 提交于 2020-03-15 23:46:07
为什么要进行单元测试? 单元测试保证局部代码的质量 单元测试改良项目代码的整体结构 单元测试降低测试、维护升级的成本 单元测试使开发过程适应频繁变化的需求 单元测试有助于提升程序员的能力 由谁进行测试?开发部门还是测试部门? 应该由开发部门进行单元测试! 由测试部门进行单元测试的问题:代价高,人手不足,耽误了测试部门对其他测试的准备工作。 由开发部门进行单元测试的问题:担心影响开发进度,程序员不习惯做单元测试,测试自己编写的代码,难于保证测试的效果。 无论由哪个部门做单元测试,都要面对一些问题,但开发部门所面对的问题可以借助工具来解决,而由测试部门进行单元测试,要么无法真正实施,要么代价昂贵。 由测试部门进行单元测试为什么成本昂贵? 需多次重复理解程序 反复沟通需要大量时间成本 不利于发挥单元测试对代码结构的约束机制 耽误测试部门对其他测试的准备工作 即使测试部门人手充裕,仅仅从效益来考虑,也不应该由测试部门进行单元测试。如果测试部门本来就人力不充裕(进行单元测试的人员需具备编码能力),勉强由测试部门进行单元测试,结果往往是----没有结果。 由开发部门进行单元测试能保证测试效果吗? 程序员测试自己编写的代码,往往只考虑“正常状况”,这当然会影响测试效果。但如果所用的单元测试工具能够统计各种白盒覆盖率,就能检查测试效果。当然,只做到这一点还是不够的,因为白盒覆盖具有逾后逾难的特点

单元测试

◇◆丶佛笑我妖孽 提交于 2020-03-15 23:39:43
1.需要先在 test 目录下,新建一个类用作测试类。 用Junit进行单元测试,都需要下面的注解: @RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (locations = { "classpath:applicationContext.xml" }) applicationContext.xml 是整个项目的Spring的配置文件。包括数据源配置、MVC配置和各种Bean的注册扫描。如果你是多个文件,就用都好隔开写多个: { "classpath:applicationContext.xml","classpath:servlet-context.xml"} 对Dao层的单元测试 将 Mapper接口注入进来,直接调用即可。可加上 @Transactional 事务注解,从而在单元测试执行出错时,可撤销对数据库的修改。 @Transactional @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) public class DaoTests { @Autowired private UserMapper userMapper;

在做自动化测试之前你需要知道的

半腔热情 提交于 2020-03-14 08:23:37
什么是自动化测?   做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。   首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。   当然,我们更普遍的认识把“自动化测试”看做“ 基于产品或项目UI层的自动化测试”。 分层的自动化测试   这个概念最近曝光度比较高,传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。   相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不同阶段所对应的测试么!我们需要规范的来做单元测试同样需要相应的单元测试框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。   集成、接口测试对于不少测试新手来说不太容易理解,单元测试关注代码的实现逻辑,例如一个if

(翻译)LearnVSXNow! #11- 测试package

时光怂恿深爱的人放手 提交于 2020-03-13 11:33:28
在前面的文章里,当我们创建package的时候,总是在向导那里勾掉测试选项,从而不采用自动测试的方式,只是手动的测试它:把package运行起来,并且看看它是否有我们预期的功能。 我之所以勾掉测试选项,并不是因为我讨厌测试,而是我认为package的测试应该作为一个主题单独来讲,需要至少一篇专门的文章来叙述它。坦率的讲,当我在第10篇里写VsxTools的代码的时候,我真的觉得我们缺少了测试这一步:我写了几百行代码了,如何保证它的正确性? 关于测试,有很多很好的书和文章,所以在这篇文章里我不打算再写一篇类似的文章。我虽然是一个测试驱动开发的粉丝,但并不是一个测试专家。所以在这篇文章里我只是讲一些和VSPackage测试相关的基本问题。 我相信VSPackage的自动化测试能带给我们很大的帮助。但我并不会很深入的讲解VSPackage的测试方法,我只是给你们展示一下如何进行VSPackage的测试,这样你们就可以利用VSPackage的测试来帮助你们测试package的正确性。 所以,我假定你们已经了解了单元测试的基本知识,并且知道如何利用Visual Studio进行单元测试。如果你觉得自己还不了解这些,请访问MSDN,你一定会从上面找到相关的信息。 Visual Studio 2005和2008的Team System有专门相对于测试人员的版本。幸运的是,就算是Visual

推荐10款Java程序员使用的单元测试工具

拟墨画扇 提交于 2020-03-13 00:58:50
前言 随着DevOp的不断流行,自动化测试慢慢成为Java开发者的关注点。因此,本文将分享10款优秀的单元测试框架和库,它们可以帮助Java开发人员在其Java项目上编写单元测试和集成测试。 1. JUnit 我绝对 JUnit 不需要太多的介绍了。即使您是Java初学者,也可能听说过它。它可以帮助您为Java代码编写单元测试。 几乎所有主要的IDE(例如Eclipse,NetBeans和 IntelliJIDEA )都提供JUnit集成,这意味着您可以直接从那些IDE编写和运行单元测试。 我们大多数人仍在使用JUnit 4,但 JUnit 5 已经发布。您可以将JUnit用于单元测试和集成测试,它还支持 Java 8 功能。 2. REST Assured REST Assured 是github上一个开源项目。 项目地址: https://github.com/rest-assured/rest-assured 优点: 简约的接口测试DSL 支持xml json的结构化解析 支持xpath jsonpath gpath等多种解析方式 对spring的支持比较全面 3.Selenium Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla

ASP.NET MVC框架

老子叫甜甜 提交于 2020-03-11 12:23:32
两个星期前, 我在博客里讨论了ASP.NET的一个新MVC(模型、视图,控制器)框架 ,我们将在不久的将来作为一个可选功能来支持。该框架提供了一个结构化的模型,来加强应用中的清晰关注分离,方便你单元测试代码和支持TDD流程。它还提供了对你在应用中发布的URL的更多的控制,也可以对从中输出的HTML提供更多的控制。 之后,我回答了来自迫切想了解更多详情的很多人的很多问题。鉴于如此高的兴趣,我觉得,写几个贴子更详细地描述如何使用这个框架,也许更有意义些。这是我将在以后几个星期里要撰写的相关贴子的第一个。 一个简单的电子商务店面应用 我将使用一个简单的电子商务商店应用来示范ASP.NET MVC框架的工作原理。在今天的贴子里,我将实现一个产品列单,以及相关的浏览应用场景。 具体来说,我们将建造一个网上商店,允许用户在访问该网站上的 /Products/Categories 网址时 浏览产品分类列表: 当用户点击上面网页上的产品分类链接时,他们将转到一个产品分类列表URL /Products/List/CategoryName 上,该页面列出了指定分类中的还在销售的产品: 当用户点击个别的产品时,他们将转到产品细节URL /Products/Detail/ProductID 上,这个网页将显示用户选定的产品的更多细节: 我们将使用新的ASP.NET MVC框架来实现上述的所有功能

玩转单元测试之DBUnit

不问归期 提交于 2020-03-09 20:15:54
DBunit 是一种扩展于JUnit的数据库驱动测试框架,它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果。 虽然不是什么新鲜货,但最近正好用到,就把学到的跟大家分享一下。 关键词:数据库层测试,DAO层测试,DBUnit教程,DBUnit入门,DBUnit实例,Sring中结合DBUnit对Dao层测试 目录 简介 前提条件 Maven配置 准备工作 实例详解 测试基类 关于数据集 Example 1 FlatXmlDataSet Example 2 ReplacementDataSet Example 3 XlsDataSet Example 4 QueryDataSet Example 5 other Troubleshooting 参考 简介 DBunit通过维护真实数据库与数据集(IDataSet)之间的关系来发现与暴露测试过程中的问题。IDataSet 代表一个或多个表的数据。此处IDataSet可以自建,可以由数据库导出,并以多种方式体现,xml文件、XLS文件和数据库查询数据等。 基于DBUnit 的测试的主要接口是IDataSet, 可以将数据库模式的全部内容表示为单个IDataSet 实例。这些表本身由Itable 实例来表示。 IDataSet 的实现有很多

VS2010(2012)中使用Unit Testing进行单元测试

不想你离开。 提交于 2020-03-09 08:42:23
使用VS 2012自带的Unit Testing工具进行单元测试是非常方便的。网上关于这方面的例子很多,这篇随笔只起个人学习笔记之用,所以脉络不会很清晰。 1、简单Demo: 待测试类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NUnitLab { public class MaxValue { // 将要测试的方法 public static int Max(int[] list) { if (list == null) return -1; int len = list.Length; if (len == 0) return list[0]; int i, max = int.MinValue; for (i = 0; i < len; i++) { if (list[i] > max) max = list[i]; } return max; } public static int Min(int[] list) { return 0; } public static void Main() { } } } 测试代码: using System; using

SSM单元测试报空指针

耗尽温柔 提交于 2020-03-08 00:17:02
ssm单元测试报空指针解决 1.数据库数据为空,没有判断 2.数据库有数据,配置文件也正常如下面: 调试时候一直报空指针,查看了配置文件还有web.xml都是正确的,最后才发现忘记了加@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations =“classpath:application.xml” ) 这两个注解忘记加了 这个注解是Spring测试的支持。所以以后要仔细啊! (新手,不喜勿喷。谢谢大佬留情) 来源: CSDN 作者: Lee_Xcsdn 链接: https://blog.csdn.net/Lee_XCSDN/article/details/104719414

[转载文章] 单元测试与单元测试框架

蹲街弑〆低调 提交于 2020-03-04 18:15:14
本文转载,原文请点击 链接 黑盒测试与白盒测试 在 第一弹 中我们介绍过,软件的测试包含单元测试、集成测试、系统测试和回归测试四个阶段。那么,这里我们先来看下各个阶段都使用怎样的测试方法。 软件测试,从测试方法上来区分可以分为黑盒测试、白盒测试和灰盒测试。 这边讲下集成测试和系统测试的区别 集成测试 在系统测试之前, 单元测试 完成之后系统集成的时候进行测试。集成测试主要是针对程序内部结构进行测试,特别是对程序之间的接口进行测试。集成测试对测试人员的 编写脚本 能力要求比较高。测试方法一般选用黑盒测试和白盒测试相结合。 系统测试 最主要的就是 功能测试 ,测试软件 《需求规格说明书》 中提到的功能是否有遗漏,是否正确的实现。做系统测试要严格按照 《需求规格说明书》 ,以它为标准。测试方法一般都使用--黑盒测试.. 黑盒测试 黑盒测试,也称为功能测试。测试者不了解程序的内部情况,不需具备应用程序的代码、内部结构和编程语言的专门知识。只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。 此测试方法可适合大部分的软件测试,如 集成测试 以及 系统测试 。 黑盒测试主要是为了发现以下几类错误: 是否有不正确或遗漏的功能