2013-08-23 2 views
0

Мне нужно найти информацию о текущем запуске UnitTest из статического метода класса-помощника. Идея получает уникальный ключ от каждого теста.Получение информации от текущего тестируемого модульного теста

Я думал об использовании TestContext, не уверен если возможно.

Exemple

[TestClass] 
public void MyTestClass 
{ 
    public TestContext TestContext { get; set; } 

    [TestMethod] 
    public void MyTestMethod() 
    { 
     TestContext.Properties.Add("MyKey", Guid.NewGuid()); 

     //Continue.... 
    } 
} 


public static class Foo 
{ 

    public static Something GetSomething() 
    { 
     //Get the guid from test context. 
     //Return something base on this key 
    } 

} 

Мы в настоящее время хранения этого ключа на резьбе с Thread.SetData, но это проблематично, если тестируемый код икру многозаходной резьбы. Для каждого потока мне нужно получить тот же ключ для данного модульного теста.

Foo.GetSomething() не вызывается из самого unittest. Код, вызывающий его, представляет собой макет, введенный Unity.

Редактировать

Я объясню контексте немного, потому что это, кажется, сбивает с толку.

Объект, созданный посредством единства, представляет собой контекст рамки сущности. При выполнении модульных тестов контекст получает свои данные в структуре, которая создается Foo.GetSomething. Назовем это DataPersistance.

DataPersistance не может быть одноэлементным, поскольку модульные тесты будут влиять друг на друга.

В настоящее время у нас есть один экземпляр DataPersistance за нить, ведьма хороша до тех пор, пока проверенный код одинарный.

Я хочу один экземпляр DataPersistance за единицу измерения. Если бы у кого-то получилось уникальное руководство для теста, я смог бы разрешить экземпляр для этого теста.

+0

Почему бы вам просто не передать его в качестве параметра вспомогательного класса? –

+0

В чем вопрос? –

+0

@Darin: потому что вспомогательный класс статичен, и он называется где-то далеко далеким от объекта, который создается через Unity. – Johnny5

ответ

0
public static class Foo 
{ 
    public static Something GetSomething(Guid guid) 
    { 
     //Return something base on this key 
     return new Something(); 
    } 
} 

Тест:

[TestClass] 
public void MyTestClass 
{ 
    public TestContext TestContext { get; set; } 

    [TestMethod] 
    public void MyTestMethod() 
    { 
     Guid guid = ...; 
     Something something = Foo.GetSomething(guid); 
    } 
} 
+0

'Foo.GetSomething' не вызывается непосредственно из метода тестирования. – Johnny5

+0

Что вы пытаетесь достичь? Поддельные базы данных? –

+0

Определенно, да. – Johnny5

Смежные вопросы