做一个爱写测试的程序员
作者:网络转载 发布时间:[ 2013/7/1 14:08:05 ] 推荐标签:
经过这种痛苦之后,我开始尝试单元测试,把要测试的代码和数据都保存一个Test项目中,每个解决方案都跟一个测试项目,用于执行测试,保存测试参数:

经过若干年的积累,这里面积累了很多实用的代码。
比如在做许可验证时,生成公匙和私匙,下面二行代码,于是写成一个测试方法,保存在我的源代码服务器中
[TestMethod]
public void SolutionValidationTest()
{
string publickey = RSACryptionHelper.GeneratePublickKey(false);
string privateKey = RSACryptionHelper.GeneratePublickKey(true);
}
这种代码库的积累,如果回忆起来,比查MSDN还快。
再比如,我的许可证机制是以Signature Xml为基础的,下面的方法可以测试许可证文件,验证它的正确性。
[TestMethod]
public void SolutionLicenseValidationTest()
{
SolutionLicense license = SolutionLicense.ReadLicense();
string licenseFile = @"H:DevelopmentBuildLicense.lic";
StreamReader reader = new StreamReader(licenseFile, Encoding.UTF8, true);
XmlTextReader xmlReader = new XmlTextReader(licenseFile);
XmlDocument doc = new XmlDocument();
doc.Load(xmlReader);
doc.Load(reader);
license = SolutionLicense.ReadLicense();
license.VerifyLicense();
}
有时候真的很偷懒,不想写个GUI程序,用这种方法来进行。调试过程中,如果有异常,MSTest会中断运行,显示异常的原因。用NUnit写的测试也一样的效果。有了Resharper的帮助,做代码的单元测试时,你完全像是在做功能测试一样,告诉VS我想运行一个方法,在方法名称前点击Run或是Debug即可。

行号左边的那个小按钮,对测试的运行和调试起到关键性的作用,极大的简化了测试代码的运行和检测。
有时候,我并不想调用Assert去判断值的真或假,比如上面的生成许可证文件,我去硬盘里面看看,检查一下内容也可以判断,自动化的步骤是加一个Assert(true, File.Exist(fileName)) ,但是由决定权在你手里,能把代码测试好,功能调试好可以收工回家。

sales@spasvo.com