[Enterprise Library]把单元测试代码跟项目代码放在一个工程中[转]
来源:互联网 发布:mplayerx mac 字幕 编辑:程序博客网 时间:2024/04/28 02:10
在阅读 Enterprise Library 代码的时候,我们可以看到 Enterprise Library 的测试代码和实现功能代码是在一个项目中的。这么做的好处在于:
测试跟实现代码放在一起,我们就可以测试 internal 的方法函数。
参见对 internal 的定义:
internal 关键字是类型和类型成员的访问修饰符。内部成员只有在同一程序集中的文件内才是可访问的。
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csref/html/vclrfInternalPG.asp
测试代码和具体实现代码放在一个项目中,这时候我们就需要区分测试版和运行版,就类似于编译工程有Debug版和Release版一样。
下面我们简单的看看实现自定义区分不同的编译版本。
首先我们仍然来看 Enterprise Library 的代码,在它的项目中,我们可以看到,编译一个项目的时候,有六个编译选项,而不是以前默认只有的两个编译选项,如下图:
对应的编译出来的版本,就具有或者不具有对应的某一部分功能。
我们如果要作单元测试,只需要编译出对应的版本既可以,在发布的时候,发布一个Release版本,这个版本就会不包含单元测试代码。
下面我们来看 Enterprise Library 具体如何实现的。
1、首先我们来看如何实现增加这几个编译选项。
A、在“解决方案资源管理器”中选中解决方案。
B、在“生成”菜单中选择“配置管理器”菜单项,这时候会有“配置管理器”窗口出来。
C、打开“活动的解决方案配置”下的下拉列表框,下拉列表项中有一项“新建”,单击它。如下图:
D、在“新建解决方案配置”窗体中,输入编译选项的名称,同时为了方便,选择一个跟这个编译选项配置比较接近的已有编译选项。如下图所示:
E、重复C、D操作,把你准备增加的编译选项都增加上去。
F、对不同的工程项目,也做类似的配置。基本类似,这里就不重复了。
2、下面我们来配置具体的编译选项。
A、选中其中一个项目,右键单击选择属性。
B、在属性页左边依次选择“配置属性”,“生成”。修改这时候右边 “条件编译常数” 中的值,比如下图方式:
上图增加了 UNIT_TESTS 编译常数。这样我们在代码中只要判断有没有这个编译常数,既可以让他去做一些事情。
如下述代码:
#if UNIT_TESTSusing System.Threading;
using NUnit.Framework;
namespace Microsoft.Practices.EnterpriseLibrary.Caching.Tests
...{
[TestFixture]
public class BackgroundSchedulerFixture
...{
[Test]
public void SchedulerCanBeStoppedWhenRequested()
...{
BackgroundScheduler scheduler = new BackgroundScheduler(null, null);
scheduler.Start();
Thread.Sleep(2500);
Assert.IsTrue(scheduler.IsActive);
scheduler.Stop();
Thread.Sleep(10000);
Assert.IsFalse(scheduler.IsActive);
} }}
#endif
这样,就可以实现如果我们采用的是 DebugUnitTests方式编译,就可以把测试代码编译到组件中,如果我们需要发布的时候,则不需要编译这部分代码。
注意:项目中别忘了引用nunit.framework.dll
- [Enterprise Library]把单元测试代码跟项目代码放在一个工程中[转]
- 把单元测试代码跟项目代码放在一个工程中
- js代码跟html如上,单独放在一个页面运行测试就可以,可当放到实际项目中只滚动2次就停了。原因
- 看到的帮个忙,把css代码单独放在一个文件夹页面引用
- 3.6 [ Enterprise Library ] 单元测试
- 不良代码展示-不要把胖对象放在列表中
- eclipse中把多个项目放在一个work set下
- eclipse中把多个项目放在一个work set下
- eclipse把多个项目放在一个文件夹
- 工程打包为jar,工程内引用的jar不能一同被打包。另外一个工程引用此jar,则把第一个工程引用的jar跟生成的jar放在同一个目录引用。
- iOS开发中addSubview的参数放在一个"({})"代码块中
- eclipse如何把多个项目放在一个文件夹下-eclipse中对项目进行分类管理
- 跟Google学写代码--Chromium工程中用到的C++11特性(Library Features)
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
- Python 代码放在函数中运行比放在全局中运行快
- JS代码放在何处?
- 怎么把一个项目直接提交到代码库中 以coding.net 为例
- STL库放在代码中使用的方法
- JAVA中常用数据类型转换函数
- dottext分析之 XmlSerializerSectionHandler
- XML-Schema的DTD描述
- 关于内联函数读书笔记
- 在Eclipse中用myEclipse进行开发(中文界面)
- [Enterprise Library]把单元测试代码跟项目代码放在一个工程中[转]
- Java开发者必去的技术网站
- Eclipse中使用Junit插件测试
- 20050922
- 利用Eclipse编辑中文资源文件
- 过桥问题
- 原来给东西分类也是一种能力
- 当微软和少林站到了一起,于是我开始火星...记微软Tech.Ed China 2005!
- 关于时间管理的感想1