如何测试序列生成器将生成预期的项目?

问题描述 投票:0回答:1

我有一个生成B的类A。我知道在一个特定的设置中,如果我调用它3次,它将生成一个Aexpected_a)的特定实例,但是我不在序列中的任何位置。

我想编写一些单元测试代码,例如:

A expected_a(...);

B b;

std::set<A> set_of_a{ b.nextA() , b.nextA(), b.nextA() };

EXPECT_TRUE(set_of_a.count(expected_a) == 1);

但是使用set需要实现A::operator<()operator<可以轻松实现,但是我正在编写生产代码以满足测试,这是我不希望/不想做的。

我尝试了unordered_set,它不需要operator<,但确实需要实现hash()

BTW A::operator=已在生产中实现。

我可以使用vector并进行迭代以手动搜索,但这似乎有些笨拙。

我如何可以优雅地编写此测试,而不必实现测试特定的运算符?

c++ unit-testing stl set containers
1个回答
0
投票

您可以简单地使用另一个容器和std::count

A expected_a(...);

B b;

std::vector<A> vec_of_as{ b.nextA() , b.nextA(), b.nextA() };

EXPECT_TRUE(std::count(std::begin(vec_of_as), std::end(vec_of_as), expected_a) == 1);
© www.soinside.com 2019 - 2024. All rights reserved.