我的测试是这样的:
[Theory]
[MemberData(nameof(TestData))]
public async Task Test(DateTime? startDate)
{
// Act
var currentDate = RunCalculation();
// Assert
currentDate.Should().BeCloseTo(startDate, TimeSpan.FromSeconds(5));
}
public static IEnumerable<object[]> TestData()
{
var now = DateTime.UtcNow;
return new[]
{
new object[]
{
now,
},
new object[]
{
now,
},
}
}
currentDate
不依赖于 startDate
,但测试运行后,它们应该是相似的。问题不在于currentDate
,而在于startDate
。
测试似乎是在代码
构建时调用的,而不是在代码执行时调用。 如果我构建代码,然后 5 分钟后运行测试,测试就会失败。如果我立即构建并运行测试,它就会成功。 Xunit 是否会在编译时以固定值自动生成测试数据?难道这里还有别的事吗?
csproj 文件也有
UtcNow
,这会影响什么吗?
版本:NET 6