2017-04-17 114 views
0

我跟着這個鏈接https://github.com/dennisroche/xunit.ioc.autofac創建的xUnit測試與autofac,但我得到了錯誤的xUnit測試與autofac

所請求的服務「Xunit.Sdk.TestOutputHelper」尚未註冊。爲避免此異常,請註冊組件以提供服務,使用IsRegistered()檢查服務註冊,或使用ResolveOptional()方法解析可選的依賴項。 我已經添加下面的代碼:

 builder.Register(context => new TestOutputHelper()) 
      .As<ITestOutputHelper>() 
      .InstancePerLifetimeScope(); 

難道我從上面的鏈接錯過了什麼?

回答

1

TL; DR:

確保使用這個庫時註冊類型TestOutputHelper也爲自己。

加長版:

AutofacTestInvokerhttps://github.com/dennisroche/xunit.ioc.autofac/blob/master/src/xunit2.ioc.autofac/AutofacTestInvoker.cs)所需要的具體類TestOutputHelper調用TestOutputHelper.Initialize(IMessageBus, ITest),這是不是在接口可用,並在創建ILifetimeScope解決它(不ITestOutputHelper!)。在你的例子中,你將它註冊爲接口,所以對於Autofac,根本沒有可用的TestOutputHelper。

編輯:文檔已被修改。詳情請參閱https://github.com/dennisroche/xunit.ioc.autofac/pull/9

+0

我把它註冊爲'builder.RegisterType ()。AsSelf()。由於()。InstancePerLifetimeScope ();' –

+0

這會工作,是的。 –

0

正在註冊ITestOutputHelper,不TestOutputHelper,似乎後來被一些構造要求。

如果您在某些測試中使用TestOutputHelper,則應將其替換爲ITestOutputHelper。

+0

我沒有用TestOutputHelper,我用ITestOutputHelper,似乎還有某處庫使用TestOutputHelper –