1

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

4

2 回答 2

1

您可以沿着有一个单独的类负责持有 static 的路线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 被卸载 - 这将在特定测试运行中的所有测试都完成时发生。

我刚刚对此进行了测试,对于夹具中的所有测试,它确实保持不变,但在下一次测试运行时会有所不同。

于 2012-04-11T12:35:19.657 回答
0

You could use the AssemblyInitialize attribute on a method to ensure it runs before any other methods in your test assembly. In that method you could generate your unique ID and set it to a static variable. If your testing methods span assemblies this won't work though.

于 2012-04-11T12:26:10.470 回答