0

私は、VSアイデンティティ(EFコア)をVS2017内で使用する私のプロジェクトを単体テストしようとしています。ASPコアアイデンティティ - ユニットテスト中メモリエラー

私はメモリにEFコアを使用して、私のDBのコンテキストを作成していたときに私が持っている問題は、それが次のエラーで吹くまである -

メッセージ:System.IO.FileLoadException:ファイルまたはアセンブリをロードできませんでした。 'Microsoft.Extensions.DependencyInjection.Abstractions、Version = 1.1.0.0、Culture = neutral、PublicKeyToken = adb9793829ddae60'またはその依存関係の1つ。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)私は、次のnugetパッケージ

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore使用してい

- 1.1.2

  • Microsoft.EntityFrameworkCore.InMemory - 1.1.2
  • 残りは、プロジェクトの作成時に得られるデフォルトのxunitパッケージです。

    任意の助けをいただければ幸いです、間違っていただきまし動作するようにしようと多くの時間を過ごす:/

    これは、ユニットテストコードです:私の観測と私は考えていくつかの研究に基づいて

    public class TestDbContext : IdentityDbContext<User> 
    { 
        public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) 
        { 
        } 
    } 
    
    public class User : IdentityUser 
    { 
    } 
    
    [Fact] 
    public void Test1() 
    { 
        var builder = new DbContextOptionsBuilder<TestDbContext>(); 
    
        builder.UseInMemoryDatabase(); 
    
        var context = new TestDbContext(builder.Options); 
    } 
    
    +0

    どのように嘲笑EFコンテキストとdbsetsを作成しようとしていますか?あなたはMoqのような模擬フレームワークを使用していますか?サンプルコードがありますか? –

    +0

    申し訳ありませんが、ほんのサンプルプロジェクトを見ましたが、私は素早く見て、何かが私にポップするかどうかを確認します –

    +0

    サンプルは私のためにうまく動作します。私は特別なこともしなかったと思う。これは私が行ったことであり、ダウンロードして、悪意のあるものはないことを確認した。Pは、Nugetの復元を実行し、コマンドラインを開いてドットネットリストアを行い、ユニットテストを実行し、戻る –

    答えて

    1

    のアップグレードは問題を解決します。

    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />

    1

    これはXUnitテストランナーに関連しています。ここに私の働く論理があります。

    Microsoft.Extensions.DependencyInjection.Abstractionsリファレンスバージョン1.1.1(これは、参照によって依存関係を手動で調べ、ビルド後にすべての出力DLLをチェックすることによって検証されます)のopsリポジトリ内のすべてのアセンブリ。

    ReSharpersテストランナーを使用してテストを実行すると、問題なく動作します。 NuGetパケットがxunit.runner.visualstudioはOPSの例外がスローされます...何かがMicrosoft.Extensions.DependencyInjection.Abstractionsバージョン1.1.0をロードしようとしているが、研究のビットを行うxunit.runner.visualstudio enter image description here

    を使用して実行する場合にのみされ、管理使用してテストを実行 enter image description here

    以前はテストランナーの問題だったようですが、NuGetパッケージをインストールする一般的に受け入れられている解決策は、どちらも動作していないようです(別々に、または互いに協力して動作します)

    これを単体テストで実行するための現在の解決策...ダウングレードEF Microsoft.Extensions.DependencyInjection.Abstractionsへの依存度がバージョン1.1.0になるようにする

    すべてのEFライブラリを次のようにダウングレードしたバージョン1.1.1(Microsoft.AspNetCore.Identity.EntityFrameworkCoreバージョン1.1.1はMicrosoft.Extensions.DependencyInjection.Abstractionsバージョン1.1.0に依存)、バージョン1.1のすべての出力DLLを削除しました。1 enter image description here

    (私は手動でこれらを削除しなければならなかった、クリーンでそれらを削除していないようでした)私はOPはおそらくダウングレードする必要はありません知っているが、うまくいけば、これは例外がスローされている理由にいくつかの洞察力を与えます次善策を決定するのに役立ちます。

    EDIT: .csprojファイルにバインディングリダイレクトを追加しようとしましたが、これはまだ動作しません。

    <PropertyGroup> 
        <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
        <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> 
        </PropertyGroup> 
    
    +0

    ありがとうジョー、これは私のために、私は長い間古いバージョンにする必要はありませんので、私は確かに(希望)V2を修正します私の作品: –

    +1

    私はあまりにも答えが更新されますが、 'Microsoft.Extensions.DependencyInjection.Abstractions'への依存がまだ1.1.0であるため、EFバージョン1.1.1を使用することができます。この方法で、あなたは1つのマイナーリリースです。 –

    関連する問題