2017-02-22 57 views
0

Привет, ребята, так что я есть этот конструкторEXPECT_THROW - Фактическое: он бросает другой тип, Google тестирует

`Matrix::Matrix(size_t row, size_t col) 
{ 
    if(row < 1 || col < 1) 
    throw new std::runtime_error("Minimalni velikost matice je 1x1"); 
    matrix = std::vector<std::vector<double> >(row,std::vector<double>(col, 0)); 
}` 

и этот тест

`Matrix *TestedMatrix; 
EXPECT_THROW(TestedMatrix = new Matrix(-2,3),std::runtime_error);` 

, но им все еще получаю, что exepction является различного типа. Я также пробовал std::runtime_error*, но результат такой же. Сначала я хотел использовать EXPECT_ANY_THROW, но он не отображался в моем охвате кода. Спасибо за помощь ! :)

+0

'size_t (-2)' не менее 1! size_t - неподписанный тип - читайте о https://cs.wikipedia.org/wiki/Dvojkov%C3%BD_dopln%C4%9Bk – PiotrNycz

+0

, насколько я могу догадаться, что вы действительно получаете: 'std :: bad_alloc' – PiotrNycz

ответ

3

Не звоните new.

Matrix::Matrix(size_t row, size_t col) 
{ 
    if(row < 1 || col < 1) 
    throw std::runtime_error("Minimalni velikost matice je 1x1"); 
    matrix = std::vector<std::vector<double> >(row,std::vector<double>(col, 0)); 
} 

new собирается возвращать void* поэтому вы получаете «исключение является различного типа» ошибка.

+0

Yea Благодарю за ваш ответ. Проблема в том, что я не могу изменить код. Я просто делаю тесты, поэтому у вас есть идея, как решить эту проблему, вызвав новую? – Crky

+0

Можете ли вы попробовать 'EXPECT_THROW (TestedMatrix = новая матрица (-2,3), void *);'? –

+0

Нет, его не работает. Alsa могу спросить вас, лучше ли использовать Matrix * TestedMatrix или Matrix Tested Matrix. Что лучше для тестирования с помощью указателя или наоборот. Благодарю. – Crky

 Смежные вопросы

  • Нет связанных вопросов^_^