当你们对一个依赖app.config文件中的值的应用程序进行单元测试时?如何测试这些值是否正确读入以及程序如何对输入到配置文件中的错误值做出反应?
必须修改NUnit应用程序的配置文件是荒谬的,但我无法读取我要测试的app.config的值.
编辑:我想我应该澄清一下.我并不担心ConfigurationManager无法读取值,但我担心测试我的程序如何对读入的值作出反应.
如何使用Settings(ApplicationSettingsBase)和依赖注入将所有配置文件代码保留在逻辑代码之外?
配置我指的是客户特定的配置文件.
我是否真的必须每次需要时注入一个配置类,还是有其他模式?
获得一些示例代码会很棒!
样品:
静态配置:
public static class StaticConfiguration
{
public static bool ShouldApplySpecialLogic { get; set; }
public static string SupportedFileMask { get; set; }
}
public class ConsumerOfStaticConfiguration
{
public void Process()
{
if (StaticConfiguration.ShouldApplySpecialLogic)
{
var strings = StaticConfiguration.SupportedFileMask.Split(',');
foreach (var @string in strings)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
非静态配置:
public interface IConfiguration
{
bool ShouldApplySpecialLogic { get; set; }
string SupportedFileMask { get; set; }
}
public class Configuration : IConfiguration
{
public bool ShouldApplySpecialLogic …Run Code Online (Sandbox Code Playgroud) c# structuremap configuration dependency-injection application-settings
我在TeamTest中有一个名为"MyClassTest"的单元测试项目.这个项目有三个TestMethods.每种方法都需要自己的测试初始化步骤.但是当我将TestInitializeAttribute应用于三个初始化方法时,它表示不应该多次使用该属性.那么在Visual Studio Team Test中用于初始化每个测试方法的属性应该是什么?
参考:
我尝试使用单元测试在我的(ASP.Net)webapplication中测试类的功能.此类从harddrive加载一些文件(以执行xsl转换):
Xsl = GetXSLFromFile(AppDomain.CurrentDomain.BaseDirectory + "\XML Transformationen\Transformation_01.xslt")
Run Code Online (Sandbox Code Playgroud)
在调试Web应用程序本身期间,可以正确解析此路径.但每当我开始单元测试(它位于一个单独的测试项目中,引用webapplication的项目)时,我就会得到测试项目的路径.
是否有可能在这种情况下获取Web应用程序的路径,或者我是否必须使用不同的方法?任何提示都表示赞赏.
亲切的问候,凯哈特曼
我已将其简化为最简单的。
VS2019 MSTest测试项目(.NET Core)模板
默认单元测试项目。
使用nuget安装System.Configuration.ConfigurationManager(5.0.0)
将 app.config 文件添加到项目中(添加 -> 新项目 -> 选择应用程序配置文件>
将条目添加到配置文件。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="TestKey" value="testvalue"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
调试下面的代码,k为空。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Configuration;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var k = System.Configuration.ConfigurationManager.AppSettings["TestKey"];
}
}
Run Code Online (Sandbox Code Playgroud)
如何让单元测试读取配置文件?