Можно ли настроить nunit для удаления домена приложения для каждого устройства (или для теста) - PullRequest
5 голосов
/ 25 февраля 2010

При тестировании одноэлементных классов нам нужно, чтобы один экземпляр "уходил" после каждого теста. Есть ли способ настроить nunit для воссоздания домена тестового приложения после каждого теста или хотя бы после каждого устройства?

Ответы [ 3 ]

4 голосов
/ 21 марта 2010

Вы можете предоставить средства для обновления экземпляра синглтона при тестировании с помощью условного метода.

//  CUT
public sealed class Singleton{

    private static Singleton _instance = new Singleton();

    private Singleton()
    {
         //  construct.
    }

    public static Singleton Instance{
        get{
            return _instance;
        }
    }

    [Conditional ("DEBUG")]
    public static void FreshInstance (){
          _instance = new Singleton();
    }
}


//  NUnit
[TestFixture]
public class SingletonTests{

    [SetUp]
    public void SetUp(){
        Singleton.FreshInstance();
    }
}
1 голос
/ 22 июня 2013

Мне нужно было сделать то же самое, поэтому я создал библиотеку, которая в основном берет текущий тест и повторно выполняет его в новом домене приложений. Это пакет nuget с именем NUnit.ApplicationDomain и с открытым исходным кодом .

Пример кода:

[Test, RunInApplicationDomain]
public void Method()
{
  Console.WriteLine("I'm in a different AppDomain")
}
0 голосов
/ 16 марта 2010

Полагаю, я что-то здесь упускаю, Ральф. Только для моей собственной выгоды, можете ли вы объяснить, почему добавление методов со следующими атрибутами в ваш тестовый класс, которые отбрасывают и воссоздают ваши экземпляры, не будет работать для вас?

Добавление этих атрибутов для методов должно запускать их до / после каждого теста.

[SetUp]

[TearDown] 

Добавление этих атрибутов для методов должно привести к их запуску до / после устройства.

[TestFixtureSetUp]

[TestFixtureTearDown]

Есть ли причина, по которой использование методов с этими атрибутами не могло создать и уничтожить ваш домен между тестами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...