1

我有三个项目

1) 包含完整业务逻辑的非托管 c++

2)C++/CLI(项目名称管理

3)C#图形界面

我在 C++/CLI 中添加了非托管 c++ 的库文件,然后在 C# 项目中添加了 C++/CLI 的 dll。这一切正常,执行也没有问题。

现在我想对调用 C++/CLI 包装器的 C# 函数进行单元测试,然后返回结果。我使用 Visual Studio 2010 创建了一个单元测试。我在我的测试项目中添加了 C++/CLI 的 dll。现在当我正在尝试执行它抛出异常 managed.dll not found的测试

这是代码

   [TestMethod()]
   public void getstateTest()
   {
    bool expected=true;
    bool actual=false;
    try
     {
        GUI.test target = new test();
        expected    = true; // TODO: Initialize to an appropriate value
        actual      = target.getstate();
     }
     catch (FileNotFoundException exception)
     {
        MessageBox.Show("Missing file is : " + exception.FileName);
     }
     Assert.AreEqual(expected, actual);
    }



    The getstate function is

namespace GUI
{
public class test
{
    public bool getstate()
    {
        bool chk = false;
        bool result;
        String a = "some path";
        String b = "some path"
        String c = "some path"
        managed  objct;
        objct = new  managed();
        objct.Initialize(a, b, c, chk);
        objct.Execute();//calls the C++/CLI execute which calls unmanaged C++
        result = objct.Executionresult();//gets a bool result
        return result;
    }
}

}

当我运行应用程序时,同样的事情工作正常,但在运行测试项目时它说缺少 dll

抱歉,如果我让您感到困惑。请询问您是否需要更多信息。提前致谢

4

2 回答 2

1

你看过测试项目的输出文件夹吗?也许 managed.dll 没有被复制到输出中。

更新:

你能从异常中发布融合日志吗?这应该给出一些为什么找不到文件的想法。

于 2012-03-21T05:53:40.077 回答
0

这些项目可能正在编译到不同的目录。

这会导致编译器正确编译,但在运行时找不到文件。

当您将单独的项目导入新的解决方案时,通常会发生这种情况。

使新的单元测试编译到同一目录。

于 2012-03-21T05:56:22.600 回答