【问题标题】:Unexpected behaviour from load test负载测试的意外行为
【发布时间】:2012-03-27 14:42:02
【问题描述】:

我有一个负载测试,它只包含一个单元测试。

单元测试是 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 是测试项目,testTest 是测试类,getstateTest 是单元测试

【问题讨论】:

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


    【解决方案1】:

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

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

    更新

    好的,有几件事可能会导致此问题:

    1. Visual Studio 不会将 ManagedBL.dll 复制到测试暂存目录中。
    2. Visual Studio 不会将BusinessLogic.lib 复制到暂存目录中。
    3. Visual Studio 不会复制 BusinessLogic.lib 使用的某些其他库依赖项(即 BusinessLogic.lib 是否链接到任何其他本机库?)

    从技术上讲,如果您已将 ManagedBL.dll 添加到 C# 项目的引用中,VS 应该复制它;但是,请务必检查它是否被正确复制(应该在 TestResults 文件夹中)。

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

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

    【讨论】:

    • 负载测试是 Visual Studio 2010 本身的一部分。我在编辑中包含了确切的错误消息
    • @ManuDilipShah 我根据您的评论更新了我的答案。回到同一个问题:ManagedBL.dll 是否被复制到 TestResults 文件夹中?
    • 就是这样...复制本机库就可以了...非常感谢...长期以来一直卡在里面
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多