|
分類:[C#]
はじめまして。 現在私はMicrosoftVisualStudio2010(Premium)、使用言語C#にて、単体テストを行っているのですが 以下のようなコードの場合、VS2010で自動生成されるコードだと例外が発生してしまいます。 (以下のコードは状況が再現するようにシンプルにしたものです)
class Class1 { private List<Class2> NumberList; private bool test(ref List<Class2> numberList) { numberList = new List<Class2>(); Class2 c1 = new Class2(); Class2 c2 = new Class2(); Class2 c3 = new Class2(); Class2 c4 = new Class2(); c1.a = 10; c2.a = 20; c3.a = 30; c4.a = 40; numberList.Add(c1); numberList.Add(c2); numberList.Add(c3); numberList.Add(c4); return true; } } class Class2 { public int a; }
以上のコードからClass1の単体テストを作成(VS2010が自動で作成します)をすると以下のようなコードとなります。
[TestMethod()] [DeploymentItem( "お勉強.exe" )] public void testTest() { Class1_Accessor target = new Class1_Accessor(); // TODO: 適切な値に初期化してください List<Class2_Accessor> numberList = null; // TODO: 適切な値に初期化してください List<Class2_Accessor> numberListExpected = null; // TODO: 適切な値に初期化してください bool expected = false; // TODO: 適切な値に初期化してください bool actual; actual = target.test( ref numberList ); Assert.AreEqual( numberListExpected, numberList ); Assert.AreEqual( expected, actual ); Assert.Inconclusive( "このテストメソッドの正確性を確認します。" ); }
これをTODO部を適宜設定し(インスタンスの取得とか)、実行するとtarget.testメソッドの実行時に以下のような例外が発生します。
テスト メソッド TestProject1.Class1Test.testTest が例外をスローしました: System.InvalidProgramException: JIT コンパイラで内部的な制限が発生しました。
この原因として考えられるのはどのようなものがあるのでしょうか? このようなケースは実際少なくないと思ましたが、ネットを探しても同じような事象を見かけないため質問させて頂きました。
|