У меня есть тестовый класс UnitTest ++, который позволяет мне проверить, что класс правильно анализирует некоторые строки.Перед запуском теста я создаю прибор, который содержит несколько строк для проверки различными функциями в цикле.Кажется, он работает нормально, но проблема в том, что в случае ошибки UnitTest ++ всегда будет выдавать мне одну и ту же строку ошибки, поэтому я не буду знать, какая именно строка вызывает проблему.
Например,он выдаст:
"[UnitTest++] ..\trunk\tests\Test_ChineseUtil.cpp(46): error: Failure in ParsePinyinT: ChineseUtil::parsePinyinT(pinyinT) == pinyinN"
Но это не говорит мне, какая строка не анализируется правильно.
Так что я хотел бы установить какое-то настраиваемое сообщение об ошибке, когда тест не пройден(в этом конкретном случае я бы дал ему первый элемент в моем массиве).По сути, мне нужно что-то вроде:
CHECK(theTest, "my error message")
Есть ли такая функция в UnitTest ++?Или, может быть, есть лучший способ сделать то, что я пытаюсь сделать?
Для информации, вот код моего класса:
#include <third_party/unittest++/UnitTest++.h>
#include <Application.h>
#include <ChineseUtil.h>
using namespace hanzi;
namespace chineseUtilTests {
class PinyinFixture {
public:
PinyinFixture() {
ChineseUtil::initialize();
testData << "third tone" << QString::fromUtf8("wo3") << QString::fromUtf8("wǒ");
testData << "no tone" << QString::fromUtf8("wo") << QString::fromUtf8("wo");
testData << "second tone" << QString::fromUtf8("guo2") << QString::fromUtf8("guó");
testData << "first tone" << QString::fromUtf8("jia1") << QString::fromUtf8("jiā");
testData << "fifth tone" << QString::fromUtf8("jia5") << QString::fromUtf8("jia");
testData << "two dots" << QString::fromUtf8("nu:") << QString::fromUtf8("nü");
testData << "two dots and tone" << QString::fromUtf8("nu:3") << QString::fromUtf8("nǚ");
}
~PinyinFixture() {
}
QStringList testData;
};
TEST_FIXTURE(PinyinFixture, ParsePinyinN) {
for (int i = 0; i < testData.size(); i++) {
QString pinyinN = testData[i][1];
QString pinyinT = testData[i][2];
CHECK(ChineseUtil::parsePinyinN(pinyinN) == pinyinT);
}
}
TEST_FIXTURE(PinyinFixture, ParsePinyinT) {
for (int i = 0; i < testData.size(); i++) {
QString pinyinN = testData[i][1];
QString pinyinT = testData[i][2];
CHECK(ChineseUtil::parsePinyinT(pinyinT) == pinyinN);
}
}
} // chineseUtilTests