gpt4 book ai didi

.net - 如何在单元测试时将配置文件复制到测试结果目录中?

转载 作者:行者123 更新时间:2023-11-28 19:51:17 26 4
gpt4 key购买 nike

我写了一些依赖配置文件的单元测试。此 file.config 被部署到我的测试项目的 bin\Debug 目录中。但是,它似乎没有被复制到我实际进行测试的输出测试结果目录中。

我搜索并找到了这些:
TFS UnitTesting not deploying local copy assembly to test dir when on build server
Test project and config file

第一个链接让我找到了如何将我的配置文件部署到我的测试项目的 bin\Debug 目录中。

第二个提供了一个可行的解决方案,尽管我发现它对我的需求有点矫枉过正,更不用说我给自己添加了一个要测试的类等等。所以,我更喜欢一种更简单的方法,它可以简单地让我拥有此配置文件自动复制到我的测试结果目录中。

EDIT #1

我正在使用:

  1. Microsoft Enterprise Library 4.1 及其命名连接;与
  2. 微软 Visual Studio 2008;和
  3. Microsoft 单元测试框架。

我的配置文件是这样的:

<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<dataConfiguration defaultDatabase="Tests" />
<connectionStrings>
<add name="Tests" connectionString="Database=Tests;Server=(local)\SQLEXPRESS;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

并命名为:Tests.config

现在,我的项目设置包含一个 DefaultSource 参数,该参数包含默认源名称,即为其创建连接和数据库对象。此设置的值为 Tests

所以,当我创建一个新连接时,我只是这样做:

public static IDbConnection CreateConnection(string source) {
return new DatabaseProviderFactory(new FileConfigurationSource(
string.Format("{0}\{1}.config", AppDomain.CurrentDomain.BaseDirectory, source)
).CreateDefault().CreateConnection();
}

现在,由于返回的 AppDomain.CurrentDomain.Basedirectory 值,这在单元测试时无法正常工作。由于此属性不会返回程序集构建目录 bin\Debug,而是返回测试实际运行的 TestResults[auto-generated-test-results-directory]

因此,在我的测试中我会:

[TestMethod()]
public void Connection_InitializationWithSourceName() {
using connection as IConnection = ConnectionProviderFactory.CreateConnection(DefaultSource) {
// Asserts here...
}
}

DefaultSource 属性将返回我的默认源设置参数,其值为 Tests。因此,FileConfigurationSource 对象类将在测试实际运行的测试结果目录中搜索名为 Tests.config 的文件,如前所述。

知道怎么做吗?

谢谢! =)

最佳答案

为什么不直接向您的项目添加一个生成后事件,它可以将文件复制到您喜欢的任何位置?

关于.net - 如何在单元测试时将配置文件复制到测试结果目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com