【发布时间】:2018-11-20 23:35:44
【问题描述】:
在我的测试报告之前,我使用 Allure 框架,它允许我将文件附加到测试中。我也使用 SpecFlow,所以我想在每个测试步骤中附加一个日志文件。 Allure 允许我这样做。
然而,当我的测试并行运行时,我无法弄清楚如何以正确的方式进行。
所以我需要将每个测试的日志写入一个我可以独立于其他日志文件处理的文件来自并行运行的测试 。
在我并行运行测试之前,我只是有一个这样的类:
public static class Log
{
private static readonly string LogFileName = "testlog.json";
public static bool IsFileExist => File.Exists(LogFileName);
public static void WriteLine(string value)
{
File.AppendAllText(LogFileName, value);
}
public static string GetLogPath()
{
return LogFileName;
}
}
然后我有一个 SpecFlow 钩子:
[AfterStep()]
public void AfterStep()
{
if (Log.IsFileExist)
{
string logFilePath = Log.GetLogPath();
AllureLifecycle.Instance.AddAttachment("displayedFileName", "application/json", logFilePath);
//Clean log file
DeleteTestLogFile();
}
}
因此,一旦将日志文件附加到我的报告中,我就将其删除,并在下一步中再次创建。
现在,当然,当我并行运行测试时,无法从多个线程访问该文件。
我该如何处理?也许我根本没有使用好的解决方案?如果是这样,请建议一个足够的方法来做我想做的事。
【问题讨论】:
-
使用 Log4Net。不要重新发明轮子
-
@MickyD 谢谢,我会试试的。但也许你可以提供一个例子作为答案?
标签: c# logging parallel-processing automation