test

NUnit2.0详细使用方法

独自空忆成欢 提交于 2020-02-09 08:31:59
1. TDD的简介 首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD: · 除非你有一个失败的自动测试,永远不要写一单行代码. · 阻止重复 我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能. 第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱 ,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了. 一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了, 2.NUnit的介绍 NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit

NUnit2.0详细使用方法

你离开我真会死。 提交于 2020-02-09 08:31:08
1. TDD的简介 首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD: · 除非你有一个失败的自动测试,永远不要写一单行代码. · 阻止重复 我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能. 第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱 ,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了. 一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了, 2.NUnit的介绍 NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit

NUnit2.0详细使用方法

爱⌒轻易说出口 提交于 2020-02-09 08:30:06
前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下. 本文分为以下部分: 1. TDD的简介 首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD: · 除非你有一个失败的自动测试,永远不要写一单行代码. · 阻止重复 我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能. 第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱 ,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了. 一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试

每日记载内容总结41

匆匆过客 提交于 2020-02-09 07:08:55
1.dbcp连接数据库(附带基本数据库操作方法) package com.nplus.dbcp; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; import org.apache.log4j.Logger; import com.nplus.help.StringHelper; public class Dbcp { public static Logger

《Maven实战》整理

纵饮孤独 提交于 2020-02-09 05:23:57
《Maven实战》整理 Table of Contents 1 Maven 介绍 2 Maven与其他构建工具的比较(IDE,Make,Ant) 2.1 形象的比喻 2.2 IDE 2.3 Make 2.4 Ant 3 Maven的安装和配置 3.1 maven 安装 3.2 maven 安装目录介绍 3.3 ~/.m2目录 3.4 设置HTTP代理 3.5 m2eclipse(eclipse maven插件) 4 Maven使用 4.1 编写POM 4.2 编写主代码 4.3 编写测试代码 4.4 打包和运行 4.5 使用ArcheType生成项目骨架 4.6 配合IDE使用 1 Maven 介绍 Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。本书将介绍Maven这一跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。 1 Maven是优秀的构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。 Maven能帮助我们标准化构建过程。在Maven之前,十个项目可能有十种构建方式;有了Maven之后

在ASP.NET Web API中使用OData

别来无恙 提交于 2020-02-09 04:38:57
一.什么是OData OData是一个开放的数据协议(Open Data Protocol) 在ASP.NET Web API中, 对于CRUD(create, read, update, and delete)应用比传统WebAPI增加了很大的灵活性 只要正确使用相关的协议,可以在同等情况下 对一个CRUD应用可以节约很多开发时间,从而提高开发效率 二.怎么搭建 做一个简单的订单查询示例 我们使用Code First模式创建两个实体对象Product(产品),Supplier(供应商) 1.新建一个ASP.NET Empty项目,选择上使用Web API,如下图 2.使用 NuGet 引用OData和EntityFramework程序集 3.在Models文件夹中增加Product(产品),Supplier(供应商)两个实体 public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public string Category { get; set; } [ForeignKey("Supplier")] public int? SupplierId { get; set; } public

JVM内存结构简单认知

拈花ヽ惹草 提交于 2020-02-09 03:27:46
关于JVM的面试传送门: https://blog.csdn.net/shengmingqijiquan/article/details/77508471 JVM内存结构主要划分为:堆,jvm栈,本地方法栈,方法区,程序计数器 如下图所示: 堆区: 简单概述 :每个Java项目都有唯一对应的一个JVM实例,每一个JVM实例又对应着一个堆区。Java堆是被当前应用所有进程所共享的,在JVM启动时就创建了。堆区的目的就是存放所有new创建实例对象和数组,由此可见堆对于当前应用来说是全局的。   PS:这也就解释了假设有A,B两个Java项目,A项目有a,b,c三个类,a类可以调用b,c三个类,但是在B项目就不可以使用a,b,c三个类了 堆区的特点 : 堆的主要优势是灵活性,它可以的动态的分配内存。编译器不需要知道需要创建对象的时候需要分配多少内存给它,也不需要知道该对象的生命周期。new一个对象的时候会自动从堆中分配内存给它,然后如果长时间没有引用指向该对象时,JVM垃圾回收机制会在某个合适的时间点回收它。 Java堆是jvm管理内存中最大的一块,它也是JVM垃圾回收的主要区域。虽然JVM垃圾回收机制会在某个合适的时间点自动回收没有引用指向的对象,但是作为java开发人员,掌握垃圾回收机制是很重要的,日后还要去学习这个.... 本地方法栈: 虚拟机执行Native方法服务

理解、学习与使用 JAVA 中的 OPTIONAL

独自空忆成欢 提交于 2020-02-09 03:16:54
从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。 本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。 Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。 我们从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException : String isocode = user.getAddress().getCountry().getIsocode().toUpperCase(); 在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行明确地检查: if (user != null) { Address address = user.getAddress(); if (address != null) { Country country = address.getCountry(); if (country != null) { String isocode = country.getIsocode(); if (isocode

npm是什么

谁说我不能喝 提交于 2020-02-09 03:13:16
npm简介 维基百科中npm定义 npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发。 艾萨克表示自己意识到“模块管理很糟糕”的问题,并看到了PHP的PEAR与Perl的CPAN等软件的缺点,于是编写了npm。 npm可以管理本地项目的所需模块并自动维护依赖情况,也可以管理全局安装的JavaScript工具。 如果一个项目中存在package.json文件,那么用户可以直接使用npm install命令自动安装和维护当前项目所需的所有模块。 在package.json文件中,开发者可以指定每个依赖项的版本范围,这样既可以保证模块自动更新,又不会因为所需模块功能大幅变化导致项目出现问题。开发者也可以选择将模块固定在某个版本之上。 简言之,npm是node package management,是一款包管理工具。 安装npm Node.js安装包中包括npm,下载地址https://nodejs.org/en/download/releases/ 下载node.js,例如10.11.0 安装一个包 如何使用npm进行包管理呢? 本地安装 使用如下命令,可以安装一个包 # npm install <package name> 会在当前目录下创建node-modules,将要安装的包放置在这个目录下。 并在package

nodejs调用WinRAR解压

荒凉一梦 提交于 2020-02-09 01:40:18
var cp = require ( "child_process" ) ; function unZIP ( winRarPath , password , zipFilePath , unZipFolder ) { return new Promise ( async ( resolve , reject ) => { cp . execFile ( winRarPath , [ "x" , "-inul" , `-p ${ password } ` , zipFilePath , unZipFolder ] , function ( err , stdout , stderr ) { if ( err ) { reject ( err ) } resolve ( stdout ) } ) } ) } async function main ( ) { try { let result = await unZIP ( "C:\\Program Files\\WinRAR\\WinRAR.exe" , '111111' , "D:\\test\\新建文本文档.rar" , "D:\\test" ) ; console . log ( '解压成功' ) } catch ( error ) { console . log ( error ) } } main ( ) 来源: CSDN