Ошибка при попытке запустить тесты nunit с TypeMock в LINQPad

Я люблю LINQPad и использую его ежедневно. Некоторое время я пытался найти способ создавать и запускать специальные тесты с помощью nunit и TypeMock в LINQPad.

Итак, я наткнулся и получил некоторые результаты, но некоторые ссылки все еще отсутствуют.

Вот что я сделал:

  1. Создайте новый запрос в linqpad, добавьте ссылку на сборки NUnit и Typemock.

  2. Создайте бегуна Nunit. (Спасибо http://www.paraesthesia.com/archive/2008/02/21/template-for-quick-typemock-testing.aspx)

  3. Добавьте пару переменных среды, чтобы включить профилировщик Typemock.

На этом этапе я могу заставить Nunit и Typemock работать с некоторым ручным шагом (необходимо скопировать dll nunit и typemock в исполняющий каталог, например, \ AppData \ Local \ Temp \ 1 \ LINQPad \ skbidgcw).

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

System.IO.FileNotFoundException : Could not load file or assembly 'LINQPad, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21353812cd2a2db5' or one of its dependencies. The system cannot find the file specified.

Мой запрос linqpad находится здесь: http://pastebin.com/QtPNCv25

Любая помощь будет оценена по достоинству!

В качестве примечания, я также пробовал использовать NUnitLite, хотя он прекрасно запускает тесты Nunit, я не могу найти способ заставить его работать с Typemock, он выдает ошибку, говоря, что «Typemock Isolator необходимо связать. с инструментом покрытия для запуска ".


person Helios    schedule 03.11.2012    source источник
comment
Имеет ли значение, если вы отключите затенение ссылок сборки в Edit | Предпочтения | Продвинутый | Исполнение?   -  person Joe Albahari    schedule 04.11.2012
comment
Нет. По-прежнему есть то же исключение System.IO.FileNotFoundException: не удалось загрузить файл или сборку LINQPad, Version = 1.0.0.0 ....   -  person Helios    schedule 05.11.2012


Ответы (1)


Наконец-то нашел способ делать то, что хотел, с помощью NUnitLite.

  • В мою систему добавлены следующие переменные среды, чтобы включить профилировщик Typemock.

Cor_Enable_Profiling = 0 × 1

COR_PROFILER = {B146457E-9AED-4624-B1E5-968D274416EC}

(Возможно, NUnitLite запускал тест в другом домене приложений, поэтому установка переменных среды через LINQPad не включала профилировщик; это можно обойти, если в NUnitLite есть переключатель для этого, но я не исследовал.)

  • Поместите TypeMock.dll и Typemock.ArrangeActAssert.dll в папку плагинов Linqpad.

  • Создайте новый запрос и добавьте NUnitLite через Nuget. Добавьте необходимые пространства имен.

Теперь должно работать следующее.

void Main()
{
    new NUnitLite.Runner.TextUI().Execute( new[]{"-noheader"} );
}

// Define other methods and classes here
[Test, Isolated]
public void TestMock()
{
    Isolate.WhenCalled( () => DateTime.Now ).WillReturn( DateTime.Today );

    var dt = DateTime.Now;

    Assert.AreEqual( DateTime.Today, dt );
}

Теперь моя жизнь должна быть значительно проще. Спасибо!

person Helios    schedule 05.11.2012