-1
パラメータとしてstring[]
を持つプライベートメソッドの単体テストを作成しようとしています。プライベートメソッドを呼び出すのは、PrivateObject
クラスで動作しますが、string[]
で呼び出しようとしたときにプライベートメソッドを呼び出せませんでした。オブジェクト参照の呼び出しにPrivateObject NullReferenceExceptionは、パラメータとして文字列[]を使用しています。
オブジェクトのインスタンスに設定されていない:
試験は
System.NullReferenceExceptionを返します。
これは私が呼び出す必要があるメソッドを含むクラスです。
public class Program{ public Program(){} private void TestCommand(string[] command){} }
私は次のことを試してみました:
Program program = new Program(); PrivateObject privateObject = new PrivateObject(program); object[] parameters = new object[1] { new string[2] { "add", "rando" } }; /* doesn't work either object[][] parameters = new object[1][]; parameters[0] = new string[2]; parameters[0][0] = "add"; parameters[0][1] = "rando";*/ privateObject.Invoke("TestCommand", parameters);
コードはそのまま動作するはずです。本当の 'TestCommand'は実際に何をしていますか? – forsvarir
「どちらもうまくいかない」とはどういう意味ですか?それらは異なるものであり、同じものの異なるコードだけではありません。 – Toxantron
パラメータリストが 'params object []'である場合、呼び出す2つの方法は、paramを 'privateObject.Invoke(" TestCommand "、新しい文字列[] {" add "、" rando "})'またはprivateObject.Invoke( "TestCommand"、新しいオブジェクト[] {新しい文字列[] {"add"、 "rando"}}) 'を使用します。後者が必要な場合がありますが、配列をオーバーネストしていると思います。 –