问题
如何给测试用例结果加上时间戳,以便于区分不同批次的运行结果。
设计
把DateTime.Now属性作为参数传给CreateDirectory()这个静态方法,用以创建一个带时间戳的文件夹。另外,也可以把DateTime.Now传给FileStream()的构造函数,并且用它来创建一个带时间戳的文件名。
方案
string folder = "Results " + DateTime.Now.ToString("s");
folder = folder.Replace(":","-");
Directory.CreateDirectory("..//..//" + folder);
string path = "..//..//" + folder + "//TestResult.txt";
FileString ofs = new FileStream(path,FileMode.Create);
StreamWriter sw = new StreamWriter(ofs);
注解
创建一个以时间戳命名的文件夹,它的名称由DateTime.Now属性的值而来,这个属性的值就是当前系统的日期和时间。把"s"参数传给ToString()方法返回的是一个可排序的日期字符串,比如“2009-10-12T14:00:00”。你可以针对ToString()使用很多其他的格式参数,但是可排序的字符串较之不可排序的字符串可以帮助更好的管理测试结果。在这里,必须把":"字符换成其他的字符(在这里换成“-”),因为“:”在路径名或者文件名里是不合法的。
这种方法也可以做一些改动,把测试结果都放到同一个文件夹里,只不过给文件名加上不同的时间戳:
string stamp = DateTime.Now.ToString("s");
stamp = stamp.Replace(":","-");
string path = "..//..//TestResults-" + stamp + ".txt";
FileString ofs = new FileStream(path,FileMode.Create);
StreamWriter sw = new StreamWriter(ofs);
这种改动假定测试套件所在目录的上两级目录一定存在。如果该目录不存在,就会抛出一个异常。存储测试用例结果的文件,其文件名变成“TestResults-”加上时间戳,再加上".txt"扩展名,例如,“TestResults-2009-10-12T14-30-00.txt”。