Модульное тестирование установки клиента (с NUnit и MSTest) - PullRequest
3 голосов
/ 06 октября 2009

Я разработал большую базу модульных тестов для приложения моей компании, и dev хотел бы передать мои модульные тесты нашему отделу поддержки, чтобы помочь им отладить проблемы установки клиента. Я написал свои модульные тесты, используя mstest, поэтому поддержка должна была бы установить Visual Studio на компьютер клиента, если он хочет использовать мои тесты «из коробки», что, очевидно, неправильно. Я рассмотрел использование mstest без VS в командной строке, но взлом реестра в системе клиента, чтобы заставить его думать, что VS установлен, тоже не работает.

Чтобы обойти это, я планировал собрать свои тесты для nunit, используя информацию в этом посте . Однако после компиляции с включенным NUnit и добавления моей dll тестовой сборки в программу запуска NUnit я получаю сообщение об ошибке «Эта сборка не была построена ни с какой известной инфраструктурой».

Кто-нибудь делал это, и есть советы / хитрости, чтобы запустить это? Или это совершенно неправильный способ решить эту проблему? Спасибо.

Ответы [ 2 ]

1 голос
/ 06 октября 2009

Меня беспокоит то, что кто-то добавляет юнит-тест (или интеграционный тест, замаскированный как юнит-тест), который вы случайно запускаете в своей базе данных клиентов. Конечно, я делаю предположения, например, что у вас есть база данных, но это кажется рискованным подходом, если вы не можете быть уверены, что ваши тесты неразрушающие, сейчас и в будущем.

Есть ли у вас вход в приложение? Это традиционный способ поддержки, и есть множество инструментов , которые могут вам помочь.

1 голос
/ 06 октября 2009

Я собираюсь пойти с вашей второй мыслью об этом "Или это совершенно неправильный способ решить эту проблему".

Чтобы решить эту проблему легко и не запутать ваш отдел поддержки, я бы порекомендовал создать небольшую оболочку командной строки для тестового класса. Вы можете написать инструмент командной строки самостоятельно или, если хотите, можете сделать следующее:

using CSharpTest.Net.Commands;
static void Main(string[] args)
{
    MyTest testClass = new MyTest();
    // optional: testClass.MySetupMethod();
    new CommandInterpreter(testClass).Run(args);
}

Просто создайте приведенный выше код как исполняемый файл командной строки в новом проекте, ссылающемся на вашу тестовую сборку и CSharpTest.Net.Libary.dll. Пространство имен CSharpTest.Net.Commands определено в сборке CSharpTest.Net.Libary.dll из этой загрузки .

По сути, вышеприведенный код будет сканировать ваш тестовый класс (с именем MyTest в приведенном выше примере) и отображать все открытые методы в виде команд, которые могут быть выполнены через командную строку. По умолчанию он предоставляет вывод справки и устанавливает Environment.ExitCode в случае сбоя. Если вы хотите получить фантазию, вы можете украсить свои тесты одним из следующих способов:

public class MyTest
{
    [System.ComponentModel.DisplayName("rename-this-function")]
    [System.ComponentModel.Description("Some description for tech-support")]
    [System.ComponentModel.Browsable(true | false)]
    public void TestSomeFunction()
    { ... }
}

(И да, я признаю, что бессовестно подключаю свой собственный код чуть-чуть:)

...