问题标签 [unittest++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
4802 浏览

c++ - How to access private class fields from a test using UnitTest++?

I'm facing a nuisance when coding my unit tests using UnitTest++. I'm wondering how to access private member class fields in a clean way (or maybe any way...)

By now, I have a solution to access protected members using a class fixture deriving from the class under test. The following code shows the idea:

Nevertheless, I think this is not very clean, because problems relating inheritance could arise in some configurations and, anyway, just protected members can be accessed and tested.

I tried to declare test classes as friends, but as these are created in some special way by UnitTest++, I haven't managed to do it yet.

Does anyone have any idea of how to make test classes friends of the the classes under test?

Is there another way of approaching this problem in an easier or different way?

Thank you all in advance.

0 投票
3 回答
620 浏览

c++ - Unittest++:测试多个可能的值

我目前正在用 C++ 实现一个简单的光线追踪器。我有一个名为 OrthonormalBasis 的类,它从一个或两个指定的向量生成三个正交单位向量,例如:

我正在使用 Unittest++ 框架测试我的所有方法。问题是,对于有效的正交基,存在不止一种可能的解决方案。例如这个测试:

有时它成功,有时它失败,因为向量 v 和 w 也可能有一个负 1,并且仍然代表一个有效的正交基。有没有办法指定多个预期值?或者你知道另一种方法吗?

重要的是,我将实际值和预期值打印到标准输出,以便调试方法,因此该解决方案无法完成工作:

0 投票
4 回答
689 浏览

c++ - 配置要包含在 C++ 测试中的库

我想在测试文件中使用 UnitTest++ 库。但是,我很难在编译时包含该库。所以这是我当前的目录结构:

我刚刚使用 UnitTest++入门指南来获取库设置。这是test.cpp:

我目前正在尝试编译:

我目前正在ld: symbol(s) not found最后得到一堆输出。那么,如何在编译该程序时正确包含 UnitTest++ 库?我在 Mac 上,我还希望 Linux 机器上的人们可以轻松地运行这些相同的测试。

哇,我希望这提供了足够的信息,如果没有,请告诉我。

0 投票
1 回答
269 浏览

c++ - UnitTest++创建cmd窗口,无法关闭

我有一个在 VS2008中使用 UnitTest++的设置。

有时,显示单元测试控制台输出的 cmd 窗口会挂起。

我可以移动窗口、调整大小和其他东西,但我无法关闭它。我在任务管理器的应用程序选项卡中看到窗口,但在进程选项卡中没有,“切换到进程”也不起作用。停止调试或关闭 VS 也无济于事,看来 VS 已经失去了对这个窗口的控制。

如果这个 cmd 窗口丢失,我将无法关闭我的计算机,这很烦人

有什么提示吗?

0 投票
2 回答
1448 浏览

c++ - UnitTest++ 多次构造夹具?

我正在用 UnitTest++ 编写一些单元测试,并想编写一堆共享一些公共资源的测试。我认为这应该通过他们的 TEST_FIXTURE 设置来工作,但它似乎正在为每个测试构建一个新的夹具。示例代码:

我觉得我一定做错了什么;我曾认为拥有夹具的全部意义在于设置/拆卸代码只发生一次。我错了吗?我还需要做些什么才能让它以这种方式工作吗?

0 投票
1 回答
1015 浏览

visual-studio-2008 - 在 Hudson 中配置 xUnit 测试输出

我在哈德逊有一个简单的 PoC 项目。PoC 具有通过 UnitTest++ 编写的单元测试,并将结果作为 XML 输出以供 xUnit 使用以转换为 jUnit 格式。

以下是突出的相关

  • 我将我的项目配置为使用 MSBuild 来构建 2008 解决方案。
  • 该项目包含要构建的 dll 和作为构建后步骤运行的单元测试。
  • 我将 Hudson 中的工作区设置为 c:\develop\money(Money 是项目的名称),在 Hudson 控制台中,我可以看到工作区文件夹、解决方案文件和输出文件夹(/bin、/doc 等)。
  • 测试控制台应用程序将其文件“money_unit_tests.xml”输出到预先创建的文件夹“reports”(制作 c:\develop\money\reports)。

但是,工作区似乎没有坚持。如果我提交工作区目录,它会显示文件夹,但如果我重新加载页面,则会显示“目录中没有文件”消息。

为什么 Hudson 不像我配置的那样使用 C:\Develop...?

我能做些什么来改变它?

如果我不能改变它,我能做些什么来减轻这些改变? (我并不完全想将 xml 的输出硬编码为 C:.hudson ...)

0 投票
1 回答
1055 浏览

c++ - 使用 CMake 构建项目,包括使用不同构建系统的其他库

C我正在开发一个用于库、C++GUI 和Cmake管理构建的开源项目。这个项目刚刚开始,只有几个文件。我可以在我的 linux 开发环境上成功生成makefiles,在 windows 上我可以Visual Studio使用 CMake 生成项目文件。到目前为止一切正常。

随着项目的发展,我正处于需要一个测试框架的阶段。我有很好的经验,UnitTest++可以在所有流行的平台上很好地工作。

问题是,我不知道将UnitTest++构建与集成CMake(他们在 linux 上使用 makefile 并且 Visual Studio 项目文件可用于 Windows)。在构建代码之前,我需要构建UnitTest++文件以生成库。如何在 CMake 中以适用于 linux 和 windows 的方式指定它?

0 投票
6 回答
4269 浏览

c++ - 如何使用 UnitTest++ 运行单个测试?

如何使用 UnitTest++ 运行单个测试?

我按原样运行 UnitTest++。我的main功能如下:

对于调试,我想写一些类似的东西,UnitTest::RunSingleTests("MyNewUnitTest");而不是UnitTest::RunAllTests();. UnitTest++ 是否提供这样的功能,如果提供,语法是什么?

0 投票
1 回答
288 浏览

flash - 使 Alchemy 和 UnitTest++ 协同工作

我在一个使用UnitTest++的项目中使用Adob​​e Alchemy。单元测试作为构建过程的一部分运行。

事实证明,UnitTest++ 依赖于在 Alchemy 中没有实现的 C++ 的一个特性,即实例化静态类和/或调用函数来初始化全局变量。

UnitTest++ 的优点在于您不必记住将测试添加到要运行的测试列表中。它使用一些宏魔法自动创建测试用例类并将它们添加到全局测试列表中。所以这:

变成这样:

其中的构造函数ListAdder添加testMyTestInstance到测试的全局列表中。

问题是由于 Alchemy 错误,ListAdder构造函数永远不会运行,所以测试列表总是空的。

为了证明ListAdder构造函数永远不会被调用,您可以检测它在调用时崩溃:

这在本机编译时会崩溃,但在使用 Alchemy 编译时不会。

一个不那么激烈的查看方法是添加一个 printf:

在本机编译时,您将看到每个测试的“ListAdder ...”,但在 Alchemy 下编译时,它不会打印任何内容。

我的问题是:如何修改 UnitTest++ 以便测试能够运行?此处描述的解决方法似乎并不适用。

0 投票
1 回答
10780 浏览

c++ - 如何告诉 lcov 在哪里可以找到我的 .cpp 和 .h 文件?

我的源代码和构建树在make(构建和运行FooAndBarTests)之后看起来像这样(参见Makefile,将不同目录中的目标文件放入一个单独的目录中? ):

然后,我可以通过运行gcov -o obj/ ../src/Foo.cpp和.gcov 在测试目录中生成 .gcov 文件gcov -o obj/ ../src/Bar.cpp

但如果我跑步,lcov -d obj/ -c -o FooAndBarTests.lcov我会得到:

然后当我跑步时,genhtml FooAndBarTests.lcov我得到:

如何告诉 lcov 和 genhtml .cpp 和 .h 文件在哪里?