Модульное тестирование кода c # в проекте ScriptSharp

#c# #nunit #script#

#c# #nunit #скрипт#

Вопрос:

Я использую ScriptSharp для создания приложения RIA. Работает неплохо, за исключением некоторых странностей.

Однако находить и устранять проблемы с помощью Firebug на самом деле не очень удобно.

Поскольку scriptsharp также предоставляет Dll, я надеялся использовать отдельный тестовый проект с использованием Nunit для тестирования некоторых частей моего кода.

Возникающая проблема заключается в том, что сгенерированная dll ссылается на mscorlib 0.7, что приводит к конфликту с mscorlib 4 в тестовом проекте.

Простым решением является создание второго простого проекта C # и копирование кодовых файлов вокруг. Но поддержка 2 проектов с одинаковой кодовой базой…

Любопытно, есть ли другой способ сделать это. Кто-нибудь?

РЕДАКТИРОВАТЬ: Решение, предложенное Кристианом Далагером, работает.

Небольшая проблема в том, что ScriptSharp переопределил System.Диагностика в mscorlib. Больше никакой отладки.Assert/Writeline. Но сейчас в этом почти нет необходимости.

Ответ №1:

Вы могли бы попробовать использовать переадресацию привязки сборки

Вы бы поместили что-то подобное в app.config вашего тестового проекта. Вы не тестировали эту конкретную конфигурацию, поэтому вам нужно будет ее скорректировать.

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705">
     <dependentAssembly>
        <assemblyIdentity name="mscorlib" publicKeyToken="b77a5c561934e089" culture="neutral"/>
        <bindingRedirect oldVersion="0.7.0.0" newVersion="4.0.0.0"/>
     </dependentAssembly>
    </assemblyBinding>
</runtime> 
  

Комментарии:

1. Кажется, это помогает! Resharper не знает об этом и продолжает жаловаться, но это незначительная проблема. Есть ли способ перенаправить пространства имен таким же образом?

2. Я думаю, вам нужно придумать свой выход из этого.. Не могли бы вы просто сказать resharper, чтобы он как-нибудь проигнорировал это?

3. Resharper легко заткнуть.

4. @lboshuizen, если вы считаете, что этот ответ действительно ответил на ваш вопрос, вы должны принять его, нажав на зеленую галочку.