2016-08-12 17 views
3

.NETコア(net46フレームワーク)のxunitテストを作成していますが、アプリケーションのルートパスを取得できないため、 appsettings.jsonのようなもの。ContentRootPathを取得するか、.NETコアのxunitコンテキストでIHostingEnvironmentを取得する

  • がIHostingEnvironment

  • のインスタンスはxUnitのテストを含む.NETプロジェクトの絶対パスを取得取得し、そのI:

    誰かが、私は、次のいずれかを達成する方法を説明していただけます自分でIHostingEnvironmentを実装できます。

非常に単純な問題かもしれませんが、私は良い解決策を見つけることができません。

+0

テストプロジェクトには、独自のバージョンのappsettings.jsonが必要です。 Microsoft.AspNetCore.TestHost.TestServerを使用している場合は、var _server = new TestServer(new WebHostBuilder()。UseStartup ())のように、メインプロジェクトで起動を実行しますが、テストプロジェクト –

答えて

4

XUnitテストでIHostingEnvironmentを注入することはできません。

これは理想的ではありませんが、このような何か行うことができます(例:SetBasePath):

var configuration = new ConfigurationBuilder() 
     .SetBasePath(Directory.GetCurrentDirectory()) 
     .AddJsonFile("remoteDeploymentConfig.json") 
     .AddUserSecrets() 
     .AddEnvironmentVariables() 
     .Build(); 

をあなたがdotnet testを行うにした場合は、プロジェクトディレクトリ自体の中からそれを実行する必要があるため、このソリューションは動作しますここでtestはそのプロジェクトのxunitパッケージに対応しています。

+0

Thx、私はこれを試してみます。 –

+0

それはDirectory.GetCurrentDirectory()が私のシナリオに適しているように働いた。 。 –

+0

resharper testrunnerでテストケースを実行しているときに、.net core 2.0-preview1でこれが動作しないようです。 – Ph0en1x

関連する問題