WinUnit是MS提供的一个针对Native Code的C++单元测试工具,经过最近几天的试用,除了还没有和VS 2008的代码覆盖率测试工具链接起来之外,其他的基本都搞得比较清楚了,总结了一些小技巧和大家分享下。
1、C++的内核代码(需要进行单元测试的部分)尽量以Lib库的形式提供,而不要采用DLL的形式,因为DLL只能对导出函数进行测试,而Lib则没有这个限制,可以对每个类以及类里面的方法进行详尽的测试。
2、WinUnit的调用一般是在Post Build事件中,最好在Release版本中进行单元测试,而Debug版本不进行单元测试,这是因为在Debug版本下可能会触发很多ASSERT宏而导致WinUnit失败。
3、如果WinUnit出现一些内部错误,比如访问违例、LoadLibrary失败等等,最好把相关的单元测试代码拷贝到一个测试工程中进行调试以确定具体的出错原因,因为这个时候WinUnit往往不能提供详细的出错信息和位置。
4、对于某些依赖于其他DLL的Lib库代码单元测试时,往往会出现LoadLibrary失败的错误,这是因为WinUnit的路径和被测试DLL的路径往往并不一致,这可以通过在Post Build事件中输入下面的一个批处理命令来解决:
SETLOCAL
SET PATH=%PATH%;$(OutDir)
WinUnit "$(TargetPath)"
ENDLOCAL