如何使用单个变量来跟踪所有测试

时间:2012-04-11 12:17:50

标签: c# mstest

我正在使用MSTest,当我第一次运行所有单元测试(或自己测试)时,我想创建一个唯一的标识符,我可以将其放入db记录中以跟踪测试。问题是我希望在所有测试中创建和使用相同的唯一引用。我真正想要使用的是DateTime标记。我正在寻找一个总是被提升的事件,然后我可以在测试期间将它放在静态容器中,然后从测试中访问这个静态容器......这可能吗?.... / p>

2 个答案:

答案 0 :(得分:1)

你可以选择一个单独的类负责持有静态DateTime

public static class TestIdGenerator
{
    private static readonly Lazy<DateTime> _testId = new Lazy<DateTime>(() => DateTime.Now);
    public static DateTime TestId
    {
        get { return _testId.Value; }
    }
}

在测试中,您可以使用

访问它
var testId = TestIdGenerator.TestId;

DateTime将在第一次访问TestId属性时设置,并且在每次后续访问时保持相同,直到CLR被卸载 - 这将在特定测试运行中的所有测试完成时发生

我刚测试了这个,并且它对于灯具中的所有测试都保持不变,但在下一次测试运行时会有所不同。

答案 1 :(得分:0)

您可以在方法上使用AssemblyInitialize属性,以确保它在测试程序集中的任何其他方法之前运行。在该方法中,您可以生成唯一ID并将其设置为静态变量。如果您的测试方法跨越组件,那么这将不起作用。