为什么 Trace.WriteLine 打印随机字符而不是指定的字符?

Why is Trace.WriteLine printing random characters instead of what has been specified?

我目前正在使用 Coded UI 编写自动化测试脚本。我在脚本的不同位置使用 Trace.Writeline 来帮助找出测试可能失败的地方。一个这样的片段如下:

Trace.WriteLine(DateTime.Now.ToString("Enter press"));
Keyboard.SendKeys("{TAB}");
Trace.WriteLine(DateTime.Now.ToString("Tab press x 20"));
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Trace.WriteLine(DateTime.Now.ToString("Asserting Period cell state."));

但是当测试是 运行 时,我得到以下输出:

2018/01/26 - 15:29:45 | Step 1 
2018/01/26 - 15:30:17 | Step 2 
2018/01/26 - 15:30:54 | Step 3 
2018/01/26 - 15:31:08 | Step 4
2018/01/26 - 15:36:57 | Step 5 
2018/01/26 - 15:42:46 | Step 6
2018/01/26 - 15:42:55 | Step 7 
2018/01/26 - 15:43:04 | Step 10
2018/01/26 - 15:44:46 | Step 11 
EnPer pre46 
Tab pre47 x 20
A47erPinA.D. Perio26 cell 47PaPe.

有人能帮我理解为什么会这样吗?

DateTime.ToString(format) 是一种从 DateTime 创建字符串的方法。您传递的部分字符串将替换为时间值。例如:"Asserting..." 中的 ss 被秒替换。

更改这些行:

Trace.WriteLine(DateTime.Now.ToString("Tab press x 20"));

你的意思可能类似于

Trace.WriteLine($"{DateTime.Now}: Tab press x 20");

试试这个:

Trace.WriteLine(DateTime.Now.ToString() + "Enter press");