【发布时间】:2011-12-15 10:35:51
【问题描述】:
我是 Pex 的新手,我不知道如何将它与机器特定的例程一起使用,例如 DateTime.Now 和 File.Exists()。
我有一个功能可以显示带有时区偏移的截止日期时间。
public class CommonDateTime
{
public static string ConvertToLongStringWithGmtOffset(DateTime cutoffData)
{
return String.Format(
"{0} {1} GMT (local time is {2})",
cutoffData.ToLongDateString(),
cutoffData.ToShortTimeString(),
DateTime.Now.ToString("zzz"), // here is the problem...
CultureInfo.InvariantCulture);
}
}
我有一个由 Pex Explorer 生成的 Pex 参数化测试
[PexClass(typeof(CommonDateTime))]
[TestFixture]
public partial class CommonDateTime_Test
{
/// <summary>Test stub for ConvertToLongStringWithGmtOffset(DateTime)</summary>
[PexMethod]
public string ConvertToLongStringWithGmtOffset(DateTime _cutOffData)
{
string result = CommonDateTime.ConvertToLongStringWithGmtOffset(_cutOffData);
return result;
}
}
但是,这会生成一个特定于机器的测试 - 当机器处于非 GMT 时区时它会失败。
public partial class CommonDateTime_Test
{
[Test]
[PexGeneratedBy(typeof(CommonDateTime_Test))]
public void ConvertToLongStringWithGmtOffset156()
{
string s;
s = this.ConvertToLongStringWithGmtOffset(default(DateTime));
PexAssert.AreEqual<string>
("Monday, January 01, 0001 12:00 AM GMT (local time is +00:00)", s);
}
}
在这种情况下我该怎么办?我可以告诉它跳过引用诸如 DateTime.Now 或 File.Exists() 之类的函数的探索函数吗?或者我可以告诉它以某种方式始终使用特定的时区吗?
【问题讨论】: