1
私は、テストメソッドを持っています属性値として配列を渡し
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type.
はおそらく、コンパイラが区別can't:
は[TestCase(new string[] { "1", "2", "5" }, Result = true)]
bool AllocateIDsTest1(IEnumerable<string> expected)
{
var target = ...
var actual = target.AllocateIDs(expected);
return actual.SequenceEqual(expected);
}
は、しかし、私はコンパイラエラーを取得します次のコンストラクタ:
TestCase(params object[] args, Named Parameters);
と
はparams object[]
と
object
の両方に解決できるため、
TestCase(object ob1, Named Paramaters);
があります。
投稿者this post私は、文字列配列がコンパイル定数として渡せることがわかっています。
TestCase
に文字列の配列を提供するにはどうすればよいですか?
[TestCase("1", "2", "5", Result = true)]
public bool AllocateIDsTest1(params string[] expected)
{
var target = ...
var actual = target.AllocateIDs(expected);
return actual.SequenceEqual(expected);
}
優秀な回避策: –
回避策でもありません。 :-)これは、TestCaseの使用方法です。コンパイラのエラーは配列に渡されたためではありません。これは明示的に属性に許可されています。これは、属性コンストラクタにnewを使用して動的に配列を作成するよう依頼するためです。 C#はそれを許可しません。 – Charlie
@Charlie「属性に明示的に許されている」と言うと、アトリビュートにアレーを割り当てるのはどうしたらよいでしょうか?静的フィールドを介して? – HimBromBeere