我的负载测试只包含一个单元测试。
单元测试是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是单元测试
答案 0 :(得分:2)
您的负载测试是测试框架的一部分(NUnit等)还是您的应用程序的一部分?
如果负载测试在测试框架内,则检查Wrapper.dll是否被复制到测试框架输出DLL并执行测试的“staging”文件夹中。此外,请准确说明运行负载测试时的错误消息。
好的,所以有几件事可能导致这个问题:
ManagedBL.dll
复制到测试暂存目录中。BusinessLogic.lib
复制到暂存目录中。BusinessLogic.lib
使用的其他库依赖项(即BusinessLogic.lib
链接到任何其他本机库?)从技术上讲,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应该能够告诉您何时您的进程无法找到文件/库。