0
我正在使用谷歌测试来执行可能会抛出异常的类的测试。我测试的方法是:谷歌测试不处理异常
void SerialPortManager::OpenPort(PortID portNo) throw(){
try{
ports[portNo]->Open();
}
catch(exception &e){
throw;
}
}
而且我使用来测试它的测试:
TEST(SerialPortManagerTest,ExceptionCatchedOnFailedOpen) {
PortID portID = COM1;
MockSerialPort* port1 = new MockSerialPort();
EXPECT_CALL(*port1, Open()).Times(Exactly(1)).WillOnce(Throw(SerialPortOpenErrorException()));
MockSerialPort* port2 = new MockSerialPort();
MockSerialPort* port3 = new MockSerialPort();
MockSerialPortFactory portFactory;
EXPECT_CALL(portFactory, CreateSerialPort(_)).Times(3).WillOnce(
ReturnPointee(&port1)).WillOnce(ReturnPointee(&port2)).WillOnce(
ReturnPointee(&port3));
SerialPortManager* serialPortManager = new SerialPortManager(
(SerialPortFactoryInterface*) &portFactory);
EXPECT_ANY_THROW(serialPortManager->OpenPort(portID));
delete serialPortManager;
}
我预计测试将被传递,而是我得到:
terminate called after throwing an instance of 'SerialPortOpenErrorException'
what(): Error Opening Serial Port
¿我如何测试异常被抛出?
无论如何,我会删除异常说明符。 –