为什么TestMethod可以访问内部属性?

时间:2015-08-06 19:58:18

标签: c# unit-testing mstest pex

我是测试的新手,我遇到了一个特定的场景,测试项目的测试方法可以访问内部属性。这是按设计工作的,或者有人可以向我解释为什么这有用吗?

测试类的片段:

/// <summary>This class contains parameterized unit tests for NWatchSystemConfiguration</summary>
    [PexClass(typeof(NWatchSystemConfiguration))]
    [PexAllowedExceptionFromTypeUnderTest(typeof(InvalidOperationException))]
    [PexAllowedExceptionFromTypeUnderTest(typeof(ArgumentException), AcceptExceptionSubtypes = true)]
    [TestClass]
    public partial class NWatchSystemConfigurationTest
    {
        [TestMethod]
        public void CreateEncryptedPropertyTest()
        {
            const string propertyName = "createdEncryptedProperty";
            const string propertyValue = "testValue";

            const string expected = propertyValue;

            target.CreateProperty(propertyName, propertyValue, true); 

            var actual = target.AppSettings.Settings[propertyName].Value;  // AppSettings is an internal property

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected, actual);
        }
    }

正在测试的类的片段:

public class NWatchSystemConfiguration : NWatchConfigurationBase
    {
        internal AppSettingsSection AppSettings;

        // Output emitted for brevity
    }

1 个答案:

答案 0 :(得分:2)

如果您未在AssembnlyInfo.cs中使用 InternalsVisibleTo attribute ,则无法访问它。 看看你的assemblyinfo.cs。我想你会找到类似[assembly: InternalsVisibleTo("TestAssemblyName")]的东西。