【发布时间】:2014-12-31 05:25:28
【问题描述】:
这是一个一般性的问题,但我没有通过谷歌搜索找到太多。我有一个测试框架,它为测试目的设置了一个环境。我的应用程序通过引用路径使用这个框架并运行手动测试就好了。但是,一旦我要求构建服务器运行我的测试,框架就会抱怨它找不到我的任何应用程序设置。 app.config 文件位于我的应用程序的测试项目中,我确信它存在于我的构建服务器上正确的 bin 文件夹中。我在 C# .NET 环境中执行此操作。
编辑:
我不确定要更具体地说明什么。我想这是构建服务器的问题,因为它似乎可以在本地运行测试,但我不知道要看什么。构建服务器没有其他任何问题,只是获取应用设置。
框架是 .NET 4.0,而主项目是 4.5。我正在使用 nunit 运行测试并在构建过程之外运行它们,但使用 Nunit gui 在同一点失败。
获取应用设置的代码非常基本:
string databaseName = ConfigurationManager.AppSettings["databaseName"];
编辑
我的测试片段:
public class UserServiceTests : DeployDBEveryFixtureBase
{
public UserServiceTests()
{
DBSetup("Core");
DBSetup("Postal");
DBSetup("Common");
}
private UserService userService = new UserService(string.Format("Data Source={0};Initial Catalog={1};User ID={2};Password={3};",
ConfigurationManager.AppSettings["targetServer"],
ConfigurationManager.AppSettings["databaseName"],
ConfigurationManager.AppSettings["userID"],
ConfigurationManager.AppSettings["password"]));
[Test]
public void UserService_Get()
{
// Act
User user = userService.GetUser(Guid.Empty, "*****", string.Empty);
// Assert
Assert.IsTrue(user.FirstName == "System");
}
}
环境部署在 DeployDBEveryFixtureBase 的基类中。 DBSetup 调用确保以正确的顺序部署每个数据库。所有这些似乎都运行良好并且我的测试已完成,但我仍然收到描述的错误。如果我查看数据库,我可以正确部署所有数据库然后删除(基类包括 TestFixtureTearDown),但似乎构建过程正在尝试再次运行它。
注意:我只是在此过程中构建解决方案文件。我目前在构建中没有 .proj 文件。
【问题讨论】:
-
这种方式更广泛,更具体。问题可能出在您的系统或构建服务器中
-
您能否在构建服务器上添加一些跟踪或类似的东西,以确保代码在 app.config 附近的正确目录中执行?
-
为了快速检查,请将您的测试 app.config 文件放在您拥有测试项目的 NUnit 程序集文件的同一文件夹中,并尝试在 GUI 上测试 NUnit。
-
这一定是我们构建过程的问题。我可以看到正在设置和拆除的环境,它使用应用程序设置,但是当 app.config 文件不再存在时,必须重新运行测试。