Как выполнить модульное тестирование общих классов - PullRequest
1 голос
/ 07 мая 2010

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

Метод теста MyLibrary.Tests.MyGenericClassTest.MyMethodTest вызвал исключение: System.MissingMethodException: не удалось загрузить тип 'MyLibrary.MyType' из сборки 'MyLibrary, версия = 1.0.3778.36113, Culture = нейтральный, PublicKllTok = 1004 *

Мой код свободно:

public class MyGenericClass<T> : List<T> where T : MyType, new()
{
    public bool MyMethod(T foo)
    {
        throw new NotImplementedException();
    }
}

С методами испытаний:

    public void MyMethodTestHelper<T>()
        where T : MyType, new()
    {
        MyGenericClass<T> target = new MyGenericClass<T>();
        foo = new T(); 
        expected = true;
        actual = target.MyMethod(foo);
        Assert.AreEqual(expected, actual);
    }

    [TestMethod()]
    public void MyMethodTest()
    {
        MyMethodTestHelper<MyType>();
    }

Я немного озадачен, поскольку я даже не могу заставить его сломаться в отладчике, чтобы добраться до внутреннего исключения, так что еще я должен проверить?

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

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Попробуйте следующее - Создайте консольное приложение и попробуйте сделать все, что вы делаете в модульном тесте. Если это также не работает, то есть другая проблема. Если это работает, есть проблема с тестом.

0 голосов
/ 09 мая 2010

Очевидно, что при модульном тестировании компактного каркасного приложения .Net framework это , а не , автоматически развернутое .

Так что вместо этого вам придется отлаживать (что приведет к развертываниюфреймворк автоматически) приложение на эмуляторе устройства, которое вы собираетесь использовать для модульного тестирования.Вы можете изменить, какое изображение эмулятора устройства используется для модульных тестов, дважды щелкнув элемент решения «SmartDeviceTestRun1.testrunConfig» - изображение для использования находится на вкладке «Хосты»

...