2015-07-07 1 views
1

Я пытаюсь создать тестовый проект с помощью Nunit для тестирования моих маршрутов Webapi 1. Проблема заключается в том, что я всегда получаю это исключение:новый HttpConfiguration(); с Nunit, но не MsTests

Исключения типа «System.IO.FileNotFoundException» произошло в System.Net.Http.Formatting.dll, но не был обработан в пользовательском коде

Дополнительного информация: Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed» или одну из его зависимостей. Система не может найти указанный файл.

Я попытался запустить код с помощью MsTests (новый testProject), и исключения там нет.

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Web.Http; 
using NUnit.Framework; 


namespace UnitTestProject1 
{ 
    [TestFixture] 
    [TestClass] 
    public class UnitTest1 
    { 
     [Test] 
     [TestMethod] 
     public void TestMethod1() 
     { 
      var config = new HttpConfiguration(); 
     } 
    } 
} 

Так что на этом примере я могу запускать как MsTest, так и Nunit. MsTest работает отлично, но Nunit этого не делает. кто знает почему? Я также пробовал с Gallio + MBUnit, и он не работает.

Подробнее: FrameworkTarget: .net 4.0 System.Web.Http версии 4.0.0

ответ

0

Просто добавьте ссылку на Newtonsoft.json и в app.config/web.config добавьте следующие строки:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Кажется, что с помощью MsTests эти шаги не требуются, но с Nunit они есть. Такая же модификация применяется, если я пытаюсь создать этот объект из простого ConsoleApplication.

0

В дополнение к ответу Данеау. NUnit не загружает файл .config, если это не правильно названный в соответствии с конвенцией здесь: http://nunit.org/index.php?p=configFiles&r=2.6.4

В соответствии с инструкциями, скопируйте файл app.config в проекте NUnit и дать ему такое же имя, как ваш проект. В вашем случае имя должно быть «UnitTestProject1.config». Поместите его в корневую папку вместе с исходным файлом app.config.

Теперь bindingRedirect будет правильно загружен.