0

我目前正在开发我的第一个负载测试,所以请多多包涵~

负载测试本身正在运行一组单元测试,将不同的请求发布到 HTTP 处理程序。根据负载测试在哪个代理上运行,请求本身是针对开发/暂存环境发出的,然后传递给“处理”请求的下游服务,INSERT并对几个数据库执行语句。我想构建并包含一个简单的插件,该插件实现并为事件处理程序ILoadTestPlugin提供它自己的一组指令。LoadTestCompleted此插件当前包含在一个单独的类库项目中,该项目包含在包含负载测试本身的同一解决方案中。

在我开始描述这个问题之前,我想指出我目前正在本地运行负载测试,该测试是针对我在 IIS 中设置的同一个处理程序。

当事件触发时我遇到了一个问题,我的方法尝试建立到目标数据库上下文的实体连接(当前使用 Entity Framework 4)。插件代码似乎无法找到负载测试项目中包含的 app.config。异常消息/堆栈跟踪指出连接字符串无效,但我渴望问题是它找不到它。最重要的是,我们的代码库中的许多地方都使用了相同的连接字符串。

我可以排除我的连接字符串无效的可能性,因为如果我创建一个使用相同配置文件执行相同代码的简单单元测试方法,它就可以正常工作。这是给定的,因为负载测试代理包含在与项目不同的目录中,因此定位配置文件没有问题。

我还尝试将复制到启动项目的输出目录的配置文件作为部署项添加到我的 .testsettings 文件中。没有布埃诺。我还在插件项目中创建了一个应用程序配置文件,它是我试图用来查看是否有效的文件的精确副本。还是没有bueno。

有没有人遇到过这个问题?如果您尝试使用<connectionString>配置文件中的部分,如何让负载测试插件找到/使用它们?

我打算尝试使用反射和良好的 ole'ConfigurationManager来尝试调用程序集以查找路径(最终是 ProjectName.dll.config 文件),但想向 StackOverflow 上的专家询问一下前进之前的建议。

另外,如果这不是那么直接的 EF 代码(或者如果它超出了点:),我会提供代码var dbContext = new dbContext( myConnectionString );示例

非常感谢任何帮助/反馈。

4

2 回答 2

0

您可以创建一个自定义负载测试插件,在 Initialize 方法中,您可以从一些 xml/app.config 文件中获取连接字符串,将其添加到上下文对象中,将在您的单元测试项目中使用它。它将更加强大且易于维护。

于 2015-04-01T20:57:58.083 回答
0

虽然我不知道如何在负载测试插件中使用应用程序的配置文件,因为负载测试和任何相应的插件在 QTAgent.exe 目录中运行,我能够实现我的加载后测试数据库清理向上一步有两种方式。

  1. 使用包含基于环境(运行设置)的连接字符串的唯一元素的上下文参数,以便连接字符串本身的唯一元素(例如 - 数据源等)以编程方式可供我的插件使用。

  2. 在向端点发出请求的单元测试类中,我创建了一个用[ClassCleanup]属性标记的静态方法。当包含来自该类的单元测试的测试组合完成运行时,将执行此操作。测试类包含在项目的 out 目录中,并且可以使用实体连接字符串访问应用程序的 .config 文件:

[TestClass]
public class MyEndpointUnitTests()
{
   [TestMethod]
   public void SubmitRequestType1()
   {
       //DoStuff for request type 1
   }

   [TestMethod]
   public void SubmitRequestType2()
   {
       //DoStuff for request type 2
   }

   [ClassCleanup]
   public static void Cleanup()
   {
       EndpointLoadTestCleanup.DoCleanup( dbContext = new DbContext( ) );
   }
}
于 2013-03-14T13:25:06.983 回答