标签: cppunit

使用CppUnit进行内存泄漏检测

是否有人知道CppUnit的扩展可用于通过测试基础对内存泄漏进行测试断言.

即CPPUNIT_ASSERT_NO_LEAKS()?

本质上,我希望能够在测试执行导致泄漏内存时失败特定测试.

c++ unit-testing memory-leaks cppunit

5
推荐指数
1
解决办法
3354
查看次数

断点未命中-“模块未在默认加载地址加载”

我正在尝试调试CPPUnitTests,并且在要测试的DLL(C ++非托管DLL)的一部分文件中设置了断点。

我将CPPunit测试器过程附加到以纯模式(也尝试使用托管+本机)打开项目的Visual Studio IDE中,然后运行测试,但根本没有遇到断点。

断点似乎很好(全红点)。我在Debug Build中构建了所有必需的DLL。

我去了Debug-> Windows-> Modules,以检查测试程序进程是否加载了我正在调试的DLL,并且也加载了SYmbol文件,但是DLL的名称中有一个感叹号,它说:当我将鼠标悬停在模块上时,模块未加载到默认加载地址。

我该如何解决?我需要调试cppunit测试。

c++ debugging cppunit visual-studio-2010 visual-studio-debugging

5
推荐指数
1
解决办法
3842
查看次数

用于单元测试的"Echo"设备

我正在为一个测试硬件通信端口的程序编写一些CPPunit测试(是的,我正在为测试器应用程序编写单元测试;-)).我正在测试的一个类基本上是设备文件描述符的包装器; 我制作read()write()调用文件描述符. Linux上是否有设备文件/驱动程序,如果你write()使用它,当你read()从它那里读回你写的内容(如FIFO队列设备)? 如果我有这个设备文件,那么在我的包装器中替换实际的设备文件会很简单,并且可以很容易地模拟真实硬件上可能出现的"环回"场景.


基本上我正在寻找的将是一种假设的"/dev/echo"设备.

例如:设备的行为如下:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789
Run Code Online (Sandbox Code Playgroud)

c++ linux unit-testing cppunit linux-device-driver

4
推荐指数
1
解决办法
1607
查看次数

在CppUnit中指定测试依赖项?

我想在CppUnit中指定测试顺序.根据我的研究,测试顺序取决于编译器或链接器以及它们如何遇到文件.

如何在CppUnit中指定依赖项?

例如,让我们考虑一个有四行的矩形类.每行包含两个点类.假设每个类都在一个单独的模块或翻译单元中.

struct Point
{
  int x;
  int y;
};

struct Line
{
  Point a;
  Point b;
};

struct Rectangle
{
  Line top;
  Line left;
  Line right;
  Line bottom;
};
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,应首先测试Point类,然后测试Line类,最后测试Rectangle类.如果Line或Point类有问题,没有理由测试Rectangle类. 这是一个非常简单的例子.

对于复合类,应首先测试内部类或成员数据类型类.

我们假设每个类都有一个相关的测试类.每个测试类都有自己发布的测试方法(已注册到CppUnit列表),位于单独的文件中.测试行的类不知道点的测试类; 和矩形类似.编译这些测试用例类时,它们的顺序取决于编译器和链接器.

那么,如何订购测试用例?

仅供参考,我使用的是CppUnit,wxTestRunner和Visual Studio 2008

c++ wxwidgets cppunit visual-studio-2008

4
推荐指数
1
解决办法
1653
查看次数

CPPUnit数组断言

我是C++的新手,甚至更多的CPPUnit.有人可以告诉我应该使用什么来断言数组值(将它们与预期值进行比较).我应该使用memcmp还是在CPPUnit,C++或任何其他库中有更好的东西?

c++ cppunit

4
推荐指数
1
解决办法
1461
查看次数

CUnit - '模拟'libc函数

我正在使用CUnit进行项目单元测试.我需要测试我是否使用正确的参数调用libc函数以及我是否以正确的方式处理它们的返回值.例如:如果我调用bind(...)函数 - 我想检查哪个af param我传递并断言如果这是错误的,并且我想模拟它的返回值并断言如果我检查它正确的方式.

出于这些目的,我希望CUnit环境有一个内置机制让我在测试时调用'mocked'bind()函数,并在运行代码时调用真正的bind()函数 - 但我找不到类似的东西这个.

如果我在CUnit中遗漏了某些东西,或者可能建议一种方法来实现这一点,你能告诉我吗?

谢谢,乔.

c c++ unit-testing cppunit cunit

4
推荐指数
1
解决办法
2068
查看次数

CppUnit能否以HTML或XML格式报告结果?

CppUnit是否能够生成其测试用例和测试结果的html或xml文件?

unit-testing cppunit visual-c++

3
推荐指数
1
解决办法
4527
查看次数

避免输出到 CppUnit 中的点

运行 CppUnit 测试时,xml 或文本文件的输出中有点。

freopen("UnitTest-Results.xml", "a", stdout);
CppUnit::TextUi::TestRunner runner;
runner.addTest(pSuite);

// Change the default outputter to a Text Outputter.
runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), std::cout));
Run Code Online (Sandbox Code Playgroud)

输出是:

.........................
OK (25 tests)
Run Code Online (Sandbox Code Playgroud)

如何选择不在输出文件中打印点?

谢谢

c++ unit-testing cppunit

3
推荐指数
1
解决办法
1326
查看次数

有关在OS X 10.8 Mountain Lion上使用Netbeans 7.2启动和运行cppunit的分步说明

有人可以提供一步一步的说明,让cppunit在OS X 10.8 Mountain Lion上工作吗?这包括所需的任何下载和Netbeans的任何配置.

目前,当我添加一个cppunit测试时,Add Test对话框中会出现一条警告:"未检测到cppunit库.测试编译可能会失败." 我从Sourceforge和svn cppunit下载并将文件复制到/ usr/local/include,但这不会使编译错误消失.

我错过了什么?Google™对此问题毫无帮助.

netbeans cppunit osx-mountain-lion netbeans-7.2

3
推荐指数
2
解决办法
6043
查看次数

一个定义规则和模板类特化

一个受欢迎的图书馆的作者决定实施以下设计模式:

// my_traits.hpp
#include <stdio.h>
#include <assert.h>

template<typename T>
struct my_traits {
        static bool equals(const T& x, const T& y) {
                printf("base\n");
                return x == y;
        }
};

template<typename T>
void my_assert(const T& x, const T& y) {
        assert(my_traits<T>::equals(x, y));
}
Run Code Online (Sandbox Code Playgroud)

现在假设库使用如下:

// main.cpp
void my_test1();
void my_test2();

int main() {
        my_test1();
        my_test2();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

// my_test1.cpp
#include "my_traits.hpp"

void my_test1() {
        my_assert(-1.0, -1.0);
}
Run Code Online (Sandbox Code Playgroud)

//my_test2.cpp
#include "my_traits.hpp"

#ifdef _WIN32
#include <float.h>
#define …
Run Code Online (Sandbox Code Playgroud)

c++ cppunit generic-programming c++11

3
推荐指数
1
解决办法
778
查看次数