提问人:Bart Vandewoestyne 提问时间:10/23/2023 更新时间:10/24/2023 访问量:78
Catch2 SECTIONs 等同于 GoogleTest
Catch2 SECTIONs equivalent in GoogleTest
问:
Catch2 框架有 SECTION 的概念,这似乎使单元测试代码更具可读性。为了了解在 Catch2 与 GoogleTest 中编写某些测试会容易得多,我正在尝试提出翻译给定 Catch2 示例代码的最佳方法
#include <catch2/catch_test_macros.hpp>
TEST_CASE( "vectors can be sized and resized", "[vector]" ) {
std::vector<int> v{1, 2, 3, 4, 5};
REQUIRE(v.size() == 5);
REQUIRE(v.capacity() == 5);
SECTION( "A) reserving bigger changes capacity but not size" )
{
v.reserve(10);
REQUIRE(v.size() == 5);
REQUIRE(v.capacity() >= 10);
SECTION( "A.1) reserving down unused capacity does not change capacity" )
{
v.reserve(7);
REQUIRE(v.size() == 5);
REQUIRE(v.capacity() >= 10);
}
v[0] = 42;
SECTION( "A.2) shrink_to_fit is a non binding request to reduce capacity() to size()")
{
v.shrink_to_fit();
REQUIRE(v.capacity() >= v.size());
}
}
}
到 GoogleTest。我目前有
#include <gtest/gtest.h>
#include <vector>
class VectorTest : public ::testing::Test
{
protected:
void SetUp() override
{
EXPECT_EQ(v.size(), 5);
EXPECT_EQ(v.capacity(), 5);
}
std::vector<int> v{1, 2, 3, 4, 5};
};
TEST_F(VectorTest, SectionA1)
{
// reserving bigger changes capacity but not size
v.reserve(10);
EXPECT_EQ(v.size(), 5);
EXPECT_GE(v.capacity(), 10);
// reserving down unused capacity does not change capacity
v.reserve(7);
EXPECT_EQ(v.size(), 5);
EXPECT_GE(v.capacity(), 10);
v[0] = 42;
}
TEST_F(VectorTest, SectionA2)
{
// reserving bigger changes capacity but not size
v.reserve(10);
EXPECT_EQ(v.size(), 5);
EXPECT_GE(v.capacity(), 10);
v[0] = 42;
// shrink_to_fit is a non binding request to reduce capacity() to size()
v.shrink_to_fit();
EXPECT_GE(v.capacity(), v.size());
}
这似乎比 Catch2 代码更冗长且可读性更差。
我想知道是否有其他更优雅/可读/更短的方法可以做到这一点?
如果为“否”,那么这将是使用 Catch2 的论据。
答:
-1赞
273K
10/24/2023
#1
非常相似:
TEST(VectorTest, Resize) {
std::vector<int> v{1, 2, 3, 4, 5};
EXPECT_EQ(v.size(), 5);
EXPECT_EQ(v.capacity(), 5);
{
SCOPED_TRACE("A) reserving bigger changes capacity but not size");
v.reserve(10);
EXPECT_EQ(v.size(), 5);
EXPECT_GE(v.capacity(), 10);
{
SCOPED_TRACE("A.1) reserving down unused capacity does not change capacity");
v.reserve(7);
EXPECT_EQ(v.size(), 5);
EXPECT_GE(v.capacity(), 10);
}
v[0] = 42;
{
SCOPED_TRACE("A.2) shrink_to_fit is a non binding request to reduce capacity() to size()");
v.shrink_to_fit();
EXPECT_EQ(v.capacity(), v.size());
}
}
}
评论
0赞
Xarn
11/12/2023
这实际上是非常错误的。
上一个:gtest:最终会EXPECT_
评论