繁体   English   中英

使用不同的应用程序键运行单元测试用例

[英]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文件。

任何帮助表示赞赏。

您现在拥有的是对外部事物的依赖,这与单元测试方法背道而驰。

您有两种选择:

  1. 将其抽象出来并在测试中进行模拟
  2. 将其作为参数传递给任何需要它的方法。 然后,您的测试只需通过在方法签名中传递不同的选项来调用它需要调用的任何内容。

这样,由于您不需要更新配置文件,因此测试将可靠并且运行速度更快。

最后,进行一些集成测试,以确保正确传递配置值并每天调用它。

您提到在代码深处读取配置值。

在这种情况下,一种选择是读取它并立即将其存储在应用程序缓存中。

从那时起,您可以在需要时从缓存中读取它。

您甚至可以创建一个抽象,即IApplicationSettings接口,该接口处理读取和设置应​​用程序缓存中的内容,并将其传递给代码中需要它的任何部分,因此您可以调用Get方法并使用该值,如果需要的话这样,您就可以在测试中模拟该值并返回测试所需的任何内容。

关键是,如果您想进行有意义且可维护的简单测试,则需要进行一些更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM