Sử dụng một mảng của cấu trúc (gọi tắt là, nói, Combination
) để chứa dữ liệu thử nghiệm của bạn, và vòng lặp dù mỗi mục trong một thử nghiệm duy nhất. Kiểm tra từng kết hợp bằng cách sử dụng EXPECT_EQ
thay vì ASSERT_EQ
để kiểm tra không bị hủy và bạn có thể tiếp tục kiểm tra các kết hợp khác.
quá tải operator<<
cho một Combination
để bạn có thể xuất nó vào một ostream
:
ostream& operator<<(ostream& os, const Combination& combo)
{
os << "(" << combo.field1 << ", " << combo.field2 << ")";
return os;
}
quá tải operator==
cho một Combination
để bạn có thể dễ dàng so sánh hai kết hợp cho sự bình đẳng:
bool operator==(const Combination& c1, const Combination& c2)
{
return (c1.field1 == c2.field1) && (c1.field2 == c2.field2);
}
Và bài kiểm tra đơn vị có thể trông giống như sau:
TEST(myTestCase, myTestName)
{
int failureCount = 0;
for (each index i in expectedComboTable)
{
Combination expected = expectedComboTable[i];
Combination actual = generateCombination(i);
EXPECT_EQ(expected, actual);
failureCount += (expected == actual) ? 0 : 1;
}
ASSERT_EQ(0, failureCount) << "some combinations failed";
}
Nguồn
2012-11-04 12:23:34
Tại sao bạn không sử dụng một mảng các cấu trúc để giữ dữ liệu thử nghiệm của bạn và lặp lại cho dù mỗi mục nhập? Bạn có thể chỉ có một trường hợp kiểm tra để kiểm tra tất cả các kết hợp. –
Xin chào Emile, cảm ơn lời đề nghị. Khi tôi thử nó, nếu một kết hợp thất bại, nó sẽ dừng trường hợp thử nghiệm tiến hành thêm và không báo cáo tỷ lệ thành công một cách chính xác. Vào cuối ngày, đây là những trường hợp thử nghiệm khác nhau đối với tôi. –