Что является более удобным способом сделать это:
EXPECT_EQ(mock->params.size(), 2);
EXPECT_EQ(mock->params[0], "firstCall");
EXPECT_EQ(mock->params[1], "secondCall");
Одна из проблем, связанных с вышесказанным, заключается в том, что тестовые случаи будут аварийно завершаться при разработке, управляемой тестами, где размер mock-> params сначала будет равен нулю до того, как будет написан тестируемый код.
Кстати, мне не разрешено использовать GoogleMock, так как для этого нужны определенные флаги компилятора, которые я не могу использовать. Я могу использовать STD и Boost.
Вы можете попробовать использовать Boost.Assign. Например, список последовательность можно сравнить с вектором:
#include <iostream>
#include <ostream>
#include <vector>
#include <boost/assign/list_of.hpp>
using namespace std;
using namespace boost::assign;
int main()
{
vector<int> v;
v.push_back(0);
v.push_back(1);
cout << (v == list_of(0)(1) ) << endl;
cout << (v == list_of(1) ) << endl;
cout << (v == list_of(1)(2) ) << endl;
}
Выход:
1
0
0
Не один лайнер, но должен делать то, что вы хотите:
std::vector<std::string> expected;
expected.push_back("firstCall");
expected.push_back("secondCall");
EXPECT_EQ(mock->params,expected);
В противном случае я бы рекомендовал использовать ASSERT_EQ()
для первого теста, чтобы предотвратить падение вашего тестового примера, как @Rook заявляет в своем комментарии (для этого он и предназначен).
ОБНОВИТЬ:
Использование Boost Assign в качестве ответа @Evgeny Panasyuk предполагает, что это должно выглядеть так:
EXPECT_EQ(mock->params,list_of("firstCall")("secondCall"));
Если я правильно понял (это не так ясно из ответа, и я лично никогда не использовал это).
Ты можешь использовать Google MockБогатая библиотека соответствий (Google Mock — сопутствующая среда для насмешек Google Test) для написания четких тестовых утверждений:
#include <gtest.h>
#include <gmock.h>
using testing::ElementsAre;
TEST(Foo, Bar) {
EXPECT_THAT(mock->params, ElementsAre("firstCall", "secondCall"));
}
Это утверждение также дает четкое сообщение, когда проверяемое условие нарушается.