Имеет ли «рабочий» в параллельном тестировании mstest уникальный идентификатор? - PullRequest
0 голосов
/ 28 августа 2018

Я работаю с MSTest, и мне было интересно, есть ли у сотрудников Parallelize уникальный идентификатор, и если да, как я могу получить эти идентификаторы? Я предположил 1 worker = 1 thread, однако Thread.CurrentThread.ManagedThreadID не является уникальным для работника. Мне нужен способ получить уникальный идентификатор работника, о котором идет речь. Кто-нибудь знает, возможно ли это?

Это то, с чем я работаю

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

Я хочу сказать, 2 работника, и у меня есть 2 разных класса. Каждый класс я хочу проводить одновременно.

Когда я запускаю работника, я создаю новый объект в моем менеджере, см. ThreadManager ниже. Однако, как вы можете видеть, метод, который я использую для получения текущего потока, не будет применяться к более чем одному работнику.

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;
    }
}
...