我是测试的新手,我遇到了一个特定的场景,测试项目的测试方法可以访问内部属性。这是按设计工作的,或者有人可以向我解释为什么这有用吗?
测试类的片段:
/// <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
}
答案 0 :(得分:2)
如果您未在AssembnlyInfo.cs中使用 InternalsVisibleTo attribute ,则无法访问它。
看看你的assemblyinfo.cs。我想你会找到类似[assembly: InternalsVisibleTo("TestAssemblyName")]
的东西。