mstest并行测试中的“工作人员”是否具有唯一的ID?

时间:2018-08-28 17:36:40

标签: c# multithreading mstest worker

我正在使用MSTest,我想知道Parallelize工作者是否具有唯一的ID,如果是这样,我如何获得这些ID?我假设1 worker = 1 thread,但是Thread.CurrentThread.ManagedThreadID并不是工作人员唯一的。我需要一种获取有关工人的唯一ID的方法。有人知道这是否可能吗?

这就是我的工作

[assembly: Parallelize(Workers =1, Scope = ExecutionScope.ClassLevel)]

我想说2个工人,有2个不同的班级。我想同时运行每个课程。

当我启动一个工作程序时,我在我的管理器中创建了一个新对象,请参见下面的ThreadManager。但是,如您所见,我用来获取当前线程的方法不适用于1个以上的worker。

public static class ThreadManager
{
    public static IConfiguration Configuration { get; set; }
    private static Dictionary<int, ThreadObject> threadDictionary;

    static ThreadManager()
        => threadDictionary = new Dictionary<int, ThreadObject>();

    public static void AddThread()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("AppSettings.json");
        Configuration = builder.Build();

        threadDictionary.Add(Thread.CurrentThread.ManagedThreadId, new ThreadObject());
        }

    public static void RemoveThread()
            => threadDictionary.Remove(Thread.CurrentThread.ManagedThreadId);

    public static ThreadObject GetThread()
    {
        ThreadObject _thread = null;
            threadDictionary.TryGetValue(Thread.CurrentThread.ManagedThreadId, out _thread);
        return _thread;
    }
}

0 个答案:

没有答案