如何强制以下代码被下面的测试命中?
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(encryptionProvider);
}
问题是其他测试在下面的测试之前调用Encrypt,所以代码永远不会进入上面的语句。
到目前为止,测试中的力量节省似乎没有做任何事情。
[TestCategory("Integration"), TestMethod]
public void TestProtectSectionOnlyHappensOnce() // integration test
{
// Arrange
IAppConfigEncryptor encryptor = new AppConfigEncryptor();
bool expected = false;
bool actual;
// Act
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var section = config.GetSection("appSettings");
section.SectionInformation.SetRawXml("");
config.Save(ConfigurationSaveMode.Full, true);
encryptor.Encrypt("appSettings", "DataProtectionConfigurationProvider");
encryptor.Encrypt("appSettings", "DataProtectionConfigurationProvider");
actual = false;
}
catch (NullReferenceException)
{
actual = true;
}
// Assert
Assert.AreEqual(expected, actual);
}
答案 0 :(得分:0)
我会使用单独的配置文件,以便测试不会干扰。由于所有测试都是独立的。