问题标签 [cxxtest]

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 投票
4 回答
9268 浏览

c++ - C++ 的 CXX 测试框架

CXX 测试框架有多有效,因为您正在围绕您编写的代码编写单元测试用例。代码中的任何错误也可能被翻译成单元测试代码中的错误?不是像两个负数就变成一个正数吗?

此外,花在 CXX 上的时间和精力至少等于(如果不超过)编码工作量。

需要你对此的想法,因为我不赞成在我的项目中使用这个框架,并且正在寻找反对它的强项。

另一方面,如果您认为它是有益的,请赐教:)。

0 投票
5 回答
1840 浏览

unit-testing - 如何对 std::vector 的排序进行单元测试

我以前从未使用过单元测试,所以我给 CxxTest 一个机会。我写了一个测试来检查一个函数是否正确地对一个 std::vector 进行排序。首先,当向量未排序时,我确保测试失败,然后作为健全性检查,我测试了 std::sort 是否有效(当然,它确实有效)。到现在为止还挺好。

然后我开始编写自己的排序函数。但是,我犯了一个错误,该函数没有正确排序。由于我的测试在排序时没有输出向量的中间状态,因此很难判断我在排序函数中哪里出错了。我最终使用cout语句(我可以使用调试器)来查找我的错误,并且在我知道我的排序功能有效之前从未使用过单元测试。

我在这里做错了吗?我认为单元测试很简单

1) 编写测试
2) 编写函数
3) 测试函数
4) 如果测试失败,修改函数
5) 重复 3 和 4 直到测试通过

我使用的过程更像

1) 编写测试
2) 编写函数
3) 测试函数
4) 如果测试失败,调试函数直到它正常工作
5) 重复 3(即使函数已经知道可以工作)

我觉得我的过程不是真正的 TDD,因为我的排序功能的设计不是由我编写的测试驱动的。我是否应该编写更多测试,例如在对矢量进行排序时检查其中间状态的测试?

0 投票
3 回答
455 浏览

assertions - 我可以在 CxxTest 中编写自定义断言吗?

我刚开始使用 CxxTest 并想测试 std::vector 是否已正确排序。到目前为止,这是我的测试:

显然,CxxTest 没有提供TS_ASSERT_SORTED断言,但是有没有办法编写自定义断言呢?这将允许我这样做:

以这种方式编写测试时,更容易看到测试的意图。

我查看了 CxxTest用户指南,但不知道您是否可以编写这样的自定义断言。作为替代方案,我可以编写一个 IsSorted 类并实现它的operator(). 然后我可以像这样编写测试:

我猜这是正确的方法。但是,如果我这样做,我应该将定义class IsSorted放在它自己的头文件中,与我的测试套件分开吗?我仍在尝试找出与单元测试相关的最佳实践,尤其是在这个框架中。

最后一个问题:我应该在setUp()方法中还是在测试本身中对向量进行排序?

0 投票
1 回答
1700 浏览

c++ - 当我运行 cxxtest 时,我得到一个未定义的引用错误

我不确定我得到的未定义参考。

DrawTestSuite.h 包含单元测试和 Linewidth.h 上的测试函数调用以执行构造函数和成员函数 draw。

#include "Linewidth.h"在 DrawTestSuite.h 中。

0 投票
1 回答
244 浏览

java - 如何检查 c++ 中使用的 java 版本

我有一个测试脚本,它检查用户正在使用的 java 版本,然后执行一些命令。但是我们正在尝试将我们所有的测试转换为 cxxtests。我想知道如何将我的版本检查脚本转换为 C++ 代码。我知道我可以只使用 system() 命令,但我希望这是最后的手段。任何帮助或线索将不胜感激。

谢谢,乔什

0 投票
1 回答
403 浏览

automake - 如何在清理时删除目录的 .mk 文件中创建自动生成规则?

我想在运行 make clean 时删除另一个目录,但我不知道如何在规则中对其进行编码。

我努力了

但这没有用。

我也试过

但这也没有用。

任何建议,将不胜感激,

0 投票
1 回答
1025 浏览

testing - cxxtest 套件可以在运行时动态扩展吗?

我希望使用其他测试项目动态扩展我的CxxTest Suite,但我发现所有测试场景必须在编译时可用(硬编码)。

我的情况是我有一个相当庞大的 C++ 类,它有 20 多个要测试的方法。此类需要针对 40 多个不同的数据集进行测试。这些数据集是通过类构造函数获得的,通过参数控制。

我的主要目标是避免为不同的数据集重写相同的 20 个测试用例。我想使用一个包含数据集列表的控制文件,并为同一个测试套件创建不同的夹具。

Q1)如何动态(在运行时)向测试套件添加更多测试?

Q2) 可以在运行时动态添加夹具吗?是否有更好的测试套件允许动态夹具?

Q3) 这是 TDD 技术避免的事情吗?任何人都对 TDD 技术有很好的总结。

谢谢,

-- 乔根森 --

0 投票
3 回答
1439 浏览

c++ - 带有非 python 测试的 py.test(特别是使用 cxxtest)

我与一个开发基于 MPI 的 C++ 数值应用程序的团队合作。该小组使用 cxxtest 来构建单独的单元测试或小套件,但是 1)在具有 cxxtest 的常用功能的目录中聚合有一些复杂性,以及 2)有一些集成测试更容易“从外部”通过启动 mpirun 来实现一个 python 线程。

我们想使用 py.test 作为将它结合在一起的粘合剂,因为它宣称自己能够运行非 python 测试(我可能会被说服跳到鼻子上)。

任何人都可以让我开始执行此操作的最佳实践吗?同样,由于它似乎是 py.test 的广告功能之一,我很乐意按照最初设想的方式进行。

谢谢,

伊莱

0 投票
6 回答
1367 浏览

c++ - 测试一个依赖于另一个类的静态函数的类

我目前正在研究一个使用另一个只有静态函数的类的类。

一切正常,直到我尝试测试我的课程。

这是该问题的简单代码示例:

假设 A 类工作正常(并且已通过其单元测试进行测试),我想检查 B 类中的runSomething函数。

我的第一个选择是为内部类创建模拟(在这个示例中 - 类 A),但在这种情况下,它不会给我任何从 A 继承的东西,因为它只有静态函数。

我的第二个选择是将 A 类的调用封装在 B 内部的私有函数中,这样我就可以控制它们的返回值(尽管选择这个选项会使好的有点复杂)。

我的问题是:有没有比我当前的选项更好的方法来测试依赖于静态类/函数的 C++ 类?

提前致谢,

塔尔。

0 投票
1 回答
2214 浏览

c++ - 如何比较 C++ 中的两个 ostream 对象是否相等?

我在课堂上重载了左移运算符并且输出工作正常,例如,当我有一行说 cout << obj; 我将输出用逗号分隔的字段。

我想为此操作编写一个测试用例,但我不知道如何将返回的结果与 cxxtest 中的预期结果进行比较。我尝试了以下方法,但没有奏效:

我应该使用不同的 cxxtest 操作还是更改 TS_ASSERT_EQUALS 中的参数传递机制?

请注意,当我输出以下行时,我会得到相同的结果:

注意:当我尝试编译程序时,由于 TS_ASSERT_EQUALS 失败,我得到了一堆编译器错误。