ฉันใช้การทดสอบของ Google และ Google จำลอง มีวัตถุจำลองที่ฉันคาดว่าจะมีการเรียกเมธอด OnConnectionError()
ซึ่งจะแจ้งเตือนวัตถุ absl::Notification done
3 ครั้ง
absl::Notification done;
EXPECT_CALL(*client, OnConnectionError(::testing::_)).Times(3)
.WillRepeatedly(Notify(&done));
bool result = client->ConnectToServer("localhost", 5000, 2);
done.WaitForNotificationWithTimeout(absl::Duration(absl::Seconds(30)));
เมธอด client->ConnectToServer
มีการวนซ้ำซึ่งส่งผลให้เกิดการเรียกซ้ำของ OnConnectionError
ซึ่งถือว่าใช้ได้อย่างสมบูรณ์และเป็นพฤติกรรมที่ต้องการ
บน Windows การทดสอบหน่วยผ่านได้ดี เมื่อเจนกินส์รันบน Ubuntu มันจะยกเลิกการทดสอบทั้งหมด (ไม่ใช่แค่การทดสอบล้มเหลวเพียงครั้งเดียว!!) ด้วยเอาต์พุตต่อไปนี้
[notification.cc : 32] RAW: Notify() method called more than once for Notification object 0x7ffffde87320
ไม่อนุญาตให้เรียกออบเจ็กต์การแจ้งเตือนหลายครั้งหรือไม่ เหตุใดการทดสอบจึงประสบความสำเร็จบน Windows และยกเลิกบน Ubuntu
ขอบคุณมากสำหรับการสนับสนุนของคุณ!