2011-05-04 81 views
1

假设有很多托管模块调用非托管模块。测试框架测试托管模块。我想测试lib中的独立C++模块,但是使它作为当前测试框架的一部分运行。目前,我正在考虑使用C++单元测试框架,并使用pinvoke从c#测试框架调用单元测试主要方法。 C++会将其结果输出到控制台,并最终将成功或失败返回给托管测试框架。有什么建议么?什么是最好的方式来编写单元测试从C#的C + +库?

回答

2

我会试着写一个C++/CLI shim,这样你就可以直接从当前的.NET测试框架调用你的单元测试,而不是把第二个图像带入图片并尝试混合和匹配结果。

0

我同意Timo的建议,你最好只使用一个测试框架。但是,与其说是一个C++/CLI shim,它需要引入一些新技术并且可能引发困难的编组问题,我的选择将是通过p/Invoke直接调用测试。所以,我会写的两种方法在C++中使用任何垫片代码(或两者):

  • 如果可能的话,写的所有测试逻辑在C#中,使垫片功能只需轻轻包裹你的现有C++逻辑,而C#代码就像C++代码一样调用它们。 (如果将C++函数放入一个可以被主应用程序和测试同样使用的DLL中,这样做尤其容易,但如果您的界面严格按类进行编程而不是处于WINAPI风格,那么这可能没有意义。然而,有时候编写WINAPI垫片有时很容易,它们包装了一个类接口,通过this作为LPVOID。)无论如何,关键是尽可能少写新的C++。

  • 对于大部分测试逻辑只适用于C++编写的代码,每个测试执行一个测试步骤并返回一个结果(例如,返回true/false并填充错误字符串,或者可能引发异常)。

相关问题