2016-03-07 3 views
0

Я пытаюсь получить дескриптор модульного тестирования довольно простого приложения, которое я создал, но при запуске теста получаю очень странную ошибку.Проект тестирования модуля orleans file not found exception

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

  • создал новую библиотеку классов
  • Добавлены ссылки на Microsoft.Orleans.TestingHost и Microsoft.Orleans.OrleansProviders как версия 1.1.2
  • Выполнить тест и получить file not found exception

Тест файл выглядит следующим образом:

[TestFixture] 
public class HelloWorldTests : TestingSiloHost 
{ 
    //public HelloWorldTests() 
    // : base(new TestingSiloOptions 
    //   { 
    //    SiloConfigFile = new FileInfo(@"C:\_Foo\Host\Tests\OrleansConfigurationForTesting.xml") 
    //   }, 
    //   new TestingClientOptions 
    //   { 
    //    ClientConfigFile = new FileInfo(@"C:\_Foo\Host\Tests\ClientConfigurationForTesting.xml") 
    //   }) 
    //{ 
    //} 

    [Test] 
    public async Task When() 
    { 
     var grain = GrainFactory.GetGrain<IHelloGrain>(0); 
     var reply = await grain.SayHello("Hello"); 

     Assert.That(reply, Is.EqualTo("Hello World")); 
    } 
} 

^^ Из вышеизложенного я даже пытался жестко закодировать местоположение файла конфигурации.

Трассировка стека (интересно его ищет конфигурационный файл в моем AppData папку:

OneTimeSetUp: System.Exception : Exception during test initialization: 
Exc level 0: System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Orleans.Runtime.Silo+SiloType,OrleansRuntime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 
    at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at Orleans.TestingHost.TestingSiloHost.LoadSiloInNewAppDomain(String siloName, SiloType type, ClusterConfiguration config, AppDomain& appDomain) 
    at Orleans.TestingHost.TestingSiloHost.StartOrleansSilo(SiloType type, TestingSiloOptions options, Int32 instanceCount, AppDomain shared) 
    at Orleans.TestingHost.TestingSiloHost.<InitializeAsync>d__16.MoveNext() 

Exception doesn't have a stacktrace 

OneTimeSetUp: System.Exception : Exception during test initialization: 
Exc level 0: System.IO.FileNotFoundException: Could not find file 'C:\Users\***\AppData\Local\JetBrains\Installations\ReSharperPlatformVs12\OrleansConfigurationForTesting.xml'. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 
    at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) 
    at System.IO.StreamReader..ctor(String path) 
    at System.IO.File.OpenText(String path) 
    at Orleans.Runtime.Configuration.ClusterConfiguration.LoadFromFile(String fileName) 
    at Orleans.TestingHost.TestingSiloHost.StartOrleansSilo(SiloType type, TestingSiloOptions options, Int32 instanceCount, AppDomain shared) 
    at Orleans.TestingHost.TestingSiloHost.<InitializeAsync>d__16.MoveNext() 

Exception doesn't have a stacktrace 

OneTimeSetUp: System.Exception : Exception during test initialization: 
Exc level 0: System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Orleans.Runtime.Silo+SiloType,OrleansRuntime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 
    at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at Orleans.TestingHost.TestingSiloHost.LoadSiloInNewAppDomain(String siloName, SiloType type, ClusterConfiguration config, AppDomain& appDomain) 
    at Orleans.TestingHost.TestingSiloHost.StartOrleansSilo(SiloType type, TestingSiloOptions options, Int32 instanceCount, AppDomain shared) 
    at Orleans.TestingHost.TestingSiloHost.<InitializeAsync>d__16.MoveNext() 

Exception doesn't have a stacktrace 
+0

В Visual Studio, щелкните правой кнопкой мыши файл конфигурации в обозревателе решений, выберите Свойства и убедитесь, что свойство «Копировать в выходной каталог» ** не установлен ** на «Не копировать» –

ответ

1

староват, но стоит быть здесь ...

Это причуда NUnit и/или его адаптера VS.

Orleans сканирует файлы в текущем каталоге, но NUnit устанавливает это в другом месте, где нет ни одного из предполагаемых файлов.

Вы должны установить текущий каталог самостоятельно до запуска Орлеана.

Положите что-то вроде этого в пространстве имен ваших тестов:

[SetUpFixture] 
public class PreFixture 
{ 
    [OneTimeSetUp] 
    public void SetUp() { 
     Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); 
    } 

} 
2

шизофреник,

Если вы используете рамки MSTest, просто добавьте [DeploymentItem("missing_file_or_dll_name")] для каждого элемента он жалуется Если вы используете xunit, связанные DLL-файлы должны быть скопированы в выходной каталог, а все дополнительные файлы (например, конфигурационные) должны быть установлены на «Copy To Output».

Дай мне знать, если тебе нужно что-нибудь еще.

+0

Атрибут 'TestFixture' означает, что они используют nunit. –