FailNotEquals 期望 AnsiString 作为第二个参数

FailNotEquals expects AnsiString as 2nd parameter

我正在使用 lazarus 中的 fpc 单元编写测试用例,对 TDateTime 的行为进行一些调查。

现在的问题是为什么我认为是 FailNotEquals 的 AssignEquals 的对应项不能接受参数为 Word,而 AssignEquals 可以接受 Word。

这是我的代码:

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;

测试

FailNotEqualsDUnitCompatibleInterface.inc 中定义为:

class procedure FailNotEquals(expected, actual: string;
        msg: string = ''; errorAddr: Pointer = nil); virtual;

方法没有重载,所以只接受字符串参数。