我正在寻找比较谷歌测试中的两个数组。在 UnitTest++ 中,这是通过 CHECK_ARRAY_EQUAL 完成的。你如何在谷歌测试中做到这一点?
原文由 Tobias Furuholm 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在寻找比较谷歌测试中的两个数组。在 UnitTest++ 中,这是通过 CHECK_ARRAY_EQUAL 完成的。你如何在谷歌测试中做到这一点?
原文由 Tobias Furuholm 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用今天的版本,您只需为您的枚举类类型声明 operator<<
,但 在与枚举相同的命名空间 中(请参阅 https://github.com/google/googletest/blob/main/docs/ advanced.md#teaching-googletest-how-to-print-your-values )
namespace Foo
{
enum class Bar
{
Hello,
Goodbye,
};
// In the same namespace !!
inline std::ostream& operator<<(std::ostream& os, const Bar& v)
{
switch (v)
{
case Bar::Hello: os << "Hello"; break;
case Bar::Goodbye: os << "Goodbye"; break;
}
return os;
}
}
TEST(Suite, Demo1)
{
using namespace Foo;
vector<Bar> vec1 = { Bar::Hello, Bar::Goodbye };
vector<Bar> vec2 = { Bar::Goodbye };
ASSERT_EQ(vec1, vec2);
}
test.cpp(106): error: Expected equality of these values:
vec1
Which is: { Hello, Goodbye }
vec2
Which is: { Goodbye }
[ FAILED ] Suite.Demo1 (1 ms)
``
原文由 56ka 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我真的建议看看 Google C++ Mocking Framework 。即使您不想模拟任何东西,它也允许您轻松编写相当复杂的断言。
例如
每种可能的情况都有很多 匹配器,您可以将它们组合起来以实现几乎任何目标。
我是否告诉过你
ElementsAre
只需要iterators
和size()
类上的方法才能工作?所以它不仅适用于 STL 的任何容器,也适用于自定义容器。Google Mock 声称几乎与 Google Test 一样便携,坦率地说,我不明白您为什么不使用它。这简直太棒了。