1

このコードが演算子で ShimNotSupportedException をスローするのはなぜですか?

ShimStreamReader.AllInstances.EndOfStreamGet = ((s)=>calls < 1);

[TestMethod]
        public void GetAllLinesFromFile__()
        { 
            int calls = 0;

            using (ShimsContext.Create())
            {
                ShimStreamReader.AllInstances.EndOfStreamGet = ((s)=>calls < 1);
                ShimStreamReader.AllInstances.ReadLine = (s) =>
                                                             {
                                                                 calls++;
                                                                 return ";;;;;;;;;;";
                                                             };
                var streamFake = new ShimStreamReader();
                var obj = new MyFile(streamFake, ';');

                Assert.IsTrue(obj.GetAllLinesFromFile().Count() == 1);
            }

        }
4

4 に答える 4

3

Resharper または他のテストランナーからテストを実行している可能性がありますか?

私はこれに関連するいくつかのブログ投稿を書いています。

http://blog.degree.no/2012/09/visual-studio-2012-fakes-shimnotsupportedexception-when-debugging-tests/

http://blog.degree.no/2012/09/unit-testing-visual-studio-2012-fakes-in-team-city/

于 2012-09-13T11:28:11.743 に答える
0

考えられる原因の 1 つは、xxx.fakes.dll と共に生成されたはずの fakesconfig ファイルがないことです。

中央プロジェクトを使用して Fake アセンブリを生成し、中央プロジェクトに依存する他のプロジェクトを使用して、生成された Fake アセンブリを使用しました。

Fake アセンブリを使用するプロジェクトを FOO と呼びましょう。

ShimNotSupportedException に遭遇しました。いくつかの調査 (数日!) の後、fakesconfig ファイルが Fake アセンブリと共に FOO.dll が存在するフォルダーにコピーされていないことがわかりました。そこに fakesconfig ファイルをコピーした後、私のテストは成功しました。

お役に立てれば。

于 2013-03-04T13:52:06.540 に答える
0

私はあなたのコードを実行し、VS 2012 RC で正常に動作します。VS 2010 で作成された VS 11 Beta でソリューションを開いたときに、同様の問題に直面しました。私が見つけた唯一の回避策は、VS 11 Beta で新しいソリューションを作成することでした。

于 2012-06-17T09:00:21.907 に答える
0

これが発生する別のケースは、Typemock がインストールされていて有効になっている場合です。

Typemock で無効にする -> モッキングを一時停止する

于 2014-03-16T20:00:58.663 に答える