F#单体测试

最近试着写了些F#代码。不过习惯了TDD的我心里感觉有点不踏实,是不是还缺点什么呢?对了,单体测试。经过一番搜索和调查我决定试试 FsUnit。结合该框架的示例代码的学习备注如下。

(* 添加引用 *)
#r "FsUnit.NUnit.dll"
#r "nunit.framework.dll"
(* 导入命名空间 *)
open NUnit.Framework
open FsUnit
(* 定义被测类 *)
type LightBulb(state) =
      member x.On = state
      override x.ToString() =
              match x.On with
              | true    -> "On"
              | false -> "Off"
(*
首先通过Attribute定义了一个TestFixture。
Setup的时候生成一个LightBulb实例,初始状态为true。
该 TestFixture包含了分别测试On属性和toString方法的两个测试方法。
测试方法的命名很有特色。测试断言通过使用管道也和自然语言很接近。
*)
[<TestFixture>]
type ``Given a LightBulb that has had its state set to true`` ()=
      let lightBulb = new LightBulb(true)
      [<Test>] member x.
         ``when I ask whether it is On it answers true.`` ()=
                      lightBulb.On |> should be True
      [<Test>] member x.
         ``when I convert it to a string it becomes "On".`` ()=
                      string lightBulb |> should equal "On"
[<TestFixture>]
type ``Given a LightBulb that has had its state set to false`` ()=
      let lightBulb = new LightBulb(false)
      [<Test>] member x.
         ``when I ask whether it is On it answers false.`` ()=
                      lightBulb.On |> should be False
      [<Test>] member x.
         ``when I convert it to a string it becomes "Off".`` ()=
                      string lightBulb |> should equal "Off"

FsUnit是一个面向F#的xUnit成员。有了这样一个单体测试框架,我们就可以更自信地写代码了。

出处http://bj007.blog.51cto.com/1701577/347752

时间: 2024-11-03 03:31:41

F#单体测试的相关文章

单体测试指南

1.单体测试应该小并且快 理想情况下在每次代码签入之前都要执行下测试套件.测试快就可以降低开发周转时间. 2.单体测试必须完全自动化,不需要交互 测试套件通常经常执行,必须完全自动化才有用.如果结果需要人工检查,该测试就不是真正的单体测试. 3.单体测试应便于运行 开发环境应该配置成通过一个单独的命令或者一个按钮点击就可以运行单独的测试和测试套件. 4.评估测试 对测试的运行进行覆盖分析从而得到执行覆盖并调查代码的哪些部分执行,哪些部分没有执行. 5.立刻修复失败测试 每个开发者都应该确保在签入

[收藏整理]linux下测试磁盘性能

参考:http://blog.sina.com.cn/s/blog_63ac8a6c0100g21d.html 1.DD 底层测试:从linux安装盘启动,鼠标和键盘启动后按Ctrl+Alt+F1,进入Sh模式 dd读测试 time dd if=/dev/sd* of=/dev/null bs=64k count=64k dd写测试 time dd if=/dev/zero of=/dev/sd* bs=64K count=64k 注:1)参数为bs=64K count=64k时,测试文件大小为

综合布线测试模型对网络应用的影响

笔者公司近期接到多起用户来电,咨询他们的网络在使用中部分信息点会由千兆自动降低为百兆(项目交付使用少于1年),沟通中得知用户这些故障信息点验收时采用FLUKE设备进行测试,测试性能符合要求,进一步沟通得知选择信道作为验收测试标准,即每个信息点包含一条永久链路和两条用户数据跳线. 针对这个问题,我们从以下几个方面进行了分析: 1.实际使用中的通道线路和测试通道是否相同,就是说实际使用的用户跳线  和测试时使用的跳线是否为同一根跳线. 2.网络环境是否正常,众所周知当前网络设备(网卡)是具有自适应功

天津招聘.net软件研发测试工程师

问题描述 .Net软件研发测试工程师(人数:3)职位描述(JobDescriptions):1.完成软件设计.开发.以及单体测试等工作:2.撰写式样文档和测试文档:3.后期维护职位要求(JobRequirements):1.年龄35岁以下,大专以上计算机相关专业学历:2.具有1年以上VB.Net编程经验,兼有asp(包括传统的asp和asp.net)开发经验的优先3.精通.NET框架,熟悉VB.NET开发技术:4.熟悉常见数据库的安装和配置,良好的数据库分析,以及程序设计能力:5.具有良好的沟通

linux中TCP Fast Open测试例子

httping是一个模拟ping输出的http请求客户端.从1.5开始支持发送fastopen请求,目前版本是2.3.4. 我在 fedora 20 (内核3.13版) 上编译了 nginx 1.5.13,yum 安装了 httping 2.3.3版. 开两个终端,一个运行tcpdump,然后另一个运行httping如下: httping -F -g http://www.google.com.hk/url -c 1 这时候看到前一个终端的输出是这样的: [chenlin.rao@com21-1

TestNg测试框架使用

安装Eclipse插件 For Eclipse 3.4 and above, enter http://beust.com/eclipse. For Eclipse 3.3 and below, enter http://beust.com/eclipse1. Maven支持TestNG <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche

VC++程序调试

1          前言       当程序的运行结果与程序员预想的不一样,如死机,计算值不正确,出现内存访问冲突等,就需要进行调试 2          进行调试前的准备工作       因为程序调试是一项十分耗时的工作,很难估计出将要花费多长时间,因此在调试前,一定要做好充分准备,尽量避免做无用功: 1.     构造好的测试步骤,让程序出错有规律性或出错的概率越大越好 2.    被调试程序及相关库是最符合要求的版本 3.    工程临时文件如.ncb被删除 4.    整个工程被重新编

对极限编程四个核心的理解(一)

编程 极限编程的核心有四个,交流.简单.反馈和勇气,这四个原则大家在平时做项目的过程中一定也注意到了.但是两位大师Kent Beck 和 Martin Fowler能够把这四点归结在一起,使他们能够共同组成极限编程这架四轮马车,却是一个不小的创造的. 下面仅就自己的学习和简单的实践过程中遇到的问题来谈谈自己对这四个核心的一些理解. 一.交流 1)       开发人员与客户的交流 这一点与传统的软件工程中有些类似,在平时开发软件的过程中也非常注重与客户的交流,特别是在需求分析.概要设计以及验收测

构建一个容易单元测试的java--web系统

web 最近在做一个项目,我们使用的是一些看似很标准的WEB结构,DAO(数据访问)+HELPER(处理业务操作)+ACTION(调用HELPER层)+struts的控制系统,页面使用struts标签和部分自定义标签完成显示. 进入测试阶段后 1,DAO测试--junit的确非常不错,我们使用eclipse+junit.jar,很满意的完成了这部分检测 2.helper测试--使用和DAO相同的测试方法完成测试 3.进入action测试阶段,出现问题,首先mapping无法模拟,改用struts