我正在拉撒路中使用fpc单元编写测试用例,对TDateTime的行为进行一些调查。
现在问题是为什么AssignEquals的对应物,我认为是FailNotEquals不能接受参数为Word,Word可以作为AssignEquals。
这是我的代码:
procedure TTestCase1.Test3;
var d1, d2: TDateTime;
var hour1, minute1, second1, ms1: Word;
var hour2, minute2, second2, ms2: Word;
begin
d2:=Now;
Sleep(10);
d1:=Now;
DecodeTime(d1, hour1, minute1, second1, ms1);
DecodeTime(d2, hour2, minute2, second2, ms2);
//AssertEquals(ms1, ms2); // This test fails as expected
FailNotEquals(ms1, ms2); // Cant compile, param 2 must be AnsiString
AssertEquals(d1, d2); // How can this slip through...
end;
测试
答案 0 :(得分:1)
FailNotEquals
在DUnitCompatibleInterface.inc
中定义为:
class procedure FailNotEquals(expected, actual: string;
msg: string = ''; errorAddr: Pointer = nil); virtual;
该方法没有重载,因此只接受字符串参数。