来自负载测试的意外行为

时间:2012-03-27 06:20:02

标签: c# c++ unit-testing c++-cli load-testing

我的负载测试只包含一个单元测试。

单元测试是C#中的一个函数,它使用C ++ / CLI包装器调用C ++代码。

它运行良好,没有任何例外。

项目

1)业务逻辑 - > BusinessLogic.lib

2)Wrapper(采用Business Logic.lib) - > Wrapper.dll

3)C#项目(需要Wrapper.dll)

运行时的负载测试表明找不到Wrapper.dll,而整个应用程序运行正常,甚至单元测试也没有报告任何此类错误

确切错误

测试方法TestProject1.testTest.getstateTest抛出异常:System.IO.FileNotFoundException:无法加载文件或程序集“ManagedBL.dll”或其依赖项之一。无法找到指定的模块

其中TestProject1是Test Project,testTest是Test Class,getstateTest是单元测试

1 个答案:

答案 0 :(得分:2)

您的负载测试是测试框架的一部分(NUnit等)还是您的应用程序的一部分?

如果负载测试在测试框架内,则检查Wrapper.dll是否被复制到测试框架输出DLL并执行测试的“staging”文件夹中。此外,请准确说明运行负载测试时的错误消息。

更新

好的,所以有几件事可能导致这个问题:

  1. Visual Studio不会将ManagedBL.dll复制到测试暂存目录中。
  2. Visual Studio不会将BusinessLogic.lib复制到暂存目录中。
  3. Visual Studio不会复制BusinessLogic.lib使用的其他库依赖项(即BusinessLogic.lib链接到任何其他本机库?)
  4. 从技术上讲,VS应该复制ManagedBL.dll,如果你已将它添加到C#项目的引用中;但是,请检查它是否正确复制(应该在TestResults文件夹中)。

    要修复2和3,您可能需要执行以下操作:How to copy native libraries to the unit test staging directory in Visual Studio 2010

    最后,如果所有其他方法都失败了,我强烈建议您在加载测试时获取Process Monitor并运行它,并使用过滤器仅显示与测试过程相关的信息。 Process Monitor应该能够告诉您何时您的进程无法找到文件/库。