Можно ли использовать MSpec для тестирования проектов микро-фреймворка .net? - PullRequest
1 голос
/ 16 октября 2011

Я бы хотел иметь возможность использовать MSpec или другую инфраструктуру BDD / TDD для тестирования кода, нацеленного на .net micro Framework.К сожалению, ссылка на сборку MF (микро-каркас) невозможна из сборки без MF.Обидно, потому что это просто код на C #, и модульные тесты будут действительно полезны в этом сценарииКто-нибудь разработал способ выполнения модульного тестирования (желательно с MSpec) для проектов микро-фреймворка .net?

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Я скачал последние версии Machine.Specification и перенес весь код в проект библиотеки классов Micro Framework.Я получил только 323 ошибки компиляции.Краткий список вещей, которые необходимо изменить ...

  1. Нет методов расширения
  2. Нет универсальных элементов
  3. Нет LINQ
  4. Нет пользовательских атрибутов
  5. Нет деревьев выражений

Стоит ли пытаться пересобрать MSpec для этого семейства .NET Framework?Возможно нет.Это то, что авторы / коммиттеры захотят не отставать?Наверное, нет.


Я попытался настроить тип проекта GUID и импорт CSharp на основе этой глупой ветки форума , и в результате получилось множество ошибок.Включая « не поддерживается ошибкой компилятора ».

Ошибка 4 TestableMicroLibrary.Tests D: \ TestableMicroLibrary \ TestableMicroLibrary.Tests \ MMP 0x81010009


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

public class When_doing_something_neat
{
    public void It_should_frob_the_widget() 
    {
        Assert.IsTrue(_widget.IsFrobbed);
    }
}

И перестроить всю библиотеку Assert / Should (помните, никаких методов расширения!).

public static class Assert
{
    public static void IsTrue(bool thing)
    {
        if(!thing) throw new AssertionException("It is not true");
    }
}
0 голосов
/ 10 ноября 2011

Другой вариант, который немного мучителен и может не подойти, - создать фиктивный проект «Нормальный» .Net3.5 / .Net4.0 рядом с микрофреймовым. Поскольку микросхема C # практически полностью совместима с исходным кодом, вы также можете просто добавить исходный файл в фиктивный проект - т.е. исходные файлы будут принадлежать обоим проектам. Затем потребуется некоторая минимальная условная компиляция с #IFDEFS, например, вокруг включений пространства имен Microsoft.Spot.

На этом этапе фиктивный проект полностью тестируем с любой обычной тестовой средой NUinit, Specflow, чем угодно. Очевидно, что этот подход требует некоторой осторожности и осторожности - следит за проблемами порядка байтов хоста и т. Д., И, конечно, оба проекта должны поддерживаться параллельно.

Другим вариантом является тестирование через проект эмулятора, который был бы более тщательным. Тем не менее, фиктивный проектный подход, безусловно, может иметь преимущества в быстром развитии WRT, TDD и т. Д.

...