1

所以我设置了这个场景:

private void InitializeTestProperties()
{
    SetTestPropertiesRecur(mTestRunner.Test, "Show", true);
    VerifyPropertiesRecur(mTestRunner.Test, "Show");
}

我期望加载到“mTestRunner”中的所有测试都将存储在 ITest 提供的字典中的属性“Show”设置为“true”。

执行此代码时,ITest 的“属性”字段似乎设置了正确的值:

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 的“属性”字段所做的更改不会在函数调用中持续存在。为什么?如何使更改持久化?

谢谢。

4

1 回答 1

0

好吧,我查看了 ITest 的组合,发现“属性”字段是只读属性。

using System;
using System.Collections;
namespace NUnit.Core
{
    public interface ITest
    {
        TestName TestName
        {
            get;
        }
        string TestType
        {
            get;
        }
        RunState RunState
        {
            get;
            set;
        }
        string IgnoreReason
        {
            get;
            set;
        }
        int TestCount
        {
            get;
        }
        IList Categories
        {
            get;
        }
        string Description
        {
            get;
            set;
        }
        IDictionary Properties
        {
            get;
        }
        bool IsSuite
        {
            get;
        }
        ITest Parent
        {
            get;
        }
        IList Tests
        {
            get;
        }
        int CountTestCases(ITestFilter filter);
    }
}

谜团已揭开!

于 2013-03-02T02:47:04.517 回答