为什么 TestMethod 可以访问内部属性?
Why does a TestMethod has access to internal properties?
我是测试新手,我 运行 进入了一个特定场景,在该场景中,测试项目的测试方法可以访问内部 属性。这是否按设计工作,或者有人可以向我解释为什么这样工作吗?
来自测试的片段 Class:
/// <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);
}
}
正在测试 class 的代码段:
public class NWatchSystemConfiguration : NWatchConfigurationBase
{
internal AppSettingsSection AppSettings;
// Output emitted for brevity
}
如果您没有在 AssembnlyInfo.cs 中使用 InternalsVisibleTo attribute,您将无法访问它。
看看你的 assemblyinfo.cs。我想你会在那里找到类似 [assembly: InternalsVisibleTo("TestAssemblyName")]
的东西。
我是测试新手,我 运行 进入了一个特定场景,在该场景中,测试项目的测试方法可以访问内部 属性。这是否按设计工作,或者有人可以向我解释为什么这样工作吗?
来自测试的片段 Class:
/// <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);
}
}
正在测试 class 的代码段:
public class NWatchSystemConfiguration : NWatchConfigurationBase
{
internal AppSettingsSection AppSettings;
// Output emitted for brevity
}
如果您没有在 AssembnlyInfo.cs 中使用 InternalsVisibleTo attribute,您将无法访问它。
看看你的 assemblyinfo.cs。我想你会在那里找到类似 [assembly: InternalsVisibleTo("TestAssemblyName")]
的东西。