升级到Delphi 12,DUnitx 测试用例项目闪退
从 Delphi 10.3 升级到 Delphi 12 后,使用 DUnitx编写的测试用例,是控制台项目,执行后闪退,控制台并没有出现
Done.. press <Enter> key to quit.
测试用例的项目代码如下
{$IFNDEF CI}// We don't want this happening when running under CI.if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause thenbeginSystem.Write('Done.. press <Enter> key to quit.');System.Readln;end;
{$ENDIF}excepton E: Exception doSystem.Writeln(E.ClassName, ': ', E.Message);end;
也就是只有 TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause 才会出现,查看源代码发现,在Delphi 12中,TDUnitX.Options.ExitBehavior 默认值是 TDUnitXExitBehavior.Continue 在delphi 10.3中的默认值是 TDUnitXExitBehavior.Pause,可能是Delphi 12中是为了批量测试用例,不允许中间停止,将默认值改成继续了。
修改的方法很简单,将 if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then 注释掉就行了