[英]Run unit test cases with different app keys
我有一个包含100个UTC的单元测试用例项目。 单元测试项目具有一个app.config文件。 app.config文件中有一个XYZFeatureOn
标志,当标志为true时,有100个测试用例运行绿色,而当标志为false时,其余50个测试用例运行绿色。 在每个测试案例中,通过将配置文件中的键替换为以下内容来打开/关闭该功能:
var xmlDoc = new XmlDocument();
xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
xmlDoc.SelectSingleNode("//XYZFeatureON").Attributes["Enabled"].Value = true/false;
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
ConfigurationManager.RefreshSection("XYZFeatureON");
现在,当我在TFS中运行测试套件时,其中一半会失败,因为标志初始化为true或false,但是当单独运行测试时,测试用例会运行绿色。
通过运行以上代码,它实际上并不会在运行时更改设置。
在这种情况下我该怎么办? 找不到每种用例的情况下是否都可以有两个不同的app.config文件。
任何帮助表示赞赏。
您现在拥有的是对外部事物的依赖,这与单元测试方法背道而驰。
您有两种选择:
这样,由于您不需要更新配置文件,因此测试将可靠并且运行速度更快。
最后,进行一些集成测试,以确保正确传递配置值并每天调用它。
您提到在代码深处读取配置值。
在这种情况下,一种选择是读取它并立即将其存储在应用程序缓存中。
从那时起,您可以在需要时从缓存中读取它。
您甚至可以创建一个抽象,即IApplicationSettings
接口,该接口处理读取和设置应用程序缓存中的内容,并将其传递给代码中需要它的任何部分,因此您可以调用Get方法并使用该值,如果需要的话这样,您就可以在测试中模拟该值并返回测试所需的任何内容。
关键是,如果您想进行有意义且可维护的简单测试,则需要进行一些更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.