だから私はこのシナリオをセットアップしました:
private void InitializeTestProperties()
{
SetTestPropertiesRecur(mTestRunner.Test, "Show", true);
VerifyPropertiesRecur(mTestRunner.Test, "Show");
}
「mTestRunner」にロードされたすべてのテストが、「true」に設定された ITest によって提供されるディクショナリに格納されたプロパティ「Show」を持つことを期待しています。
このコードが実行されると、ITest の "Properties" フィールドに正しい値が設定されているように見えます。
private void SetTestPropertiesRecur(ITest test, object key, object val)
{
test.Properties[key] = val;
Console.WriteLine(test.TestName.FullName + ": " + test.Properties[key]); // works
if (test.IsSuite)
{
foreach (ITest child in test.Tests)
{
SetTestPropertiesRecur(child, key, val);
}
}
}
しかし、別の関数で確認しようとすると、「プロパティ」フィールドが再度設定されません。
private void VerifyPropertiesRecur(ITest test, object key)
{
Console.WriteLine(test.TestName.FullName + ": " + test.Properties[key]); // does not print the right value. "test.Properties[key]" has nothing associated with it for all tests.
if (test.IsSuite)
{
foreach (ITest child in test.Tests)
{
VerifyProperties(child, key);
}
}
}
要約すると、ITest の "Properties" フィールドに加えられた変更は、関数呼び出し間で保持されません。なんで?変更を永続化するにはどうすればよいですか?
ありがとう。