У меня есть модуль, записанный на C., в котором я определен API, определяемый следующим образом. < /p>
int ReadData(void* data, int data_size, char* filename, int offset)
При тестировании модуля, чтобы покрыть полное покрытие, мне нужно нажать в условиях ошибки для вызова системы FSEEK и Fread.
Может ли кто -нибудь объяснить мне, как я могу переопределить Fseek/Fread во время конкретного тестового случая, чтобы вместо системы вызовы он позвонил в Mockeek/Fread для этого тестового случая?ReadAPI.c
< /code>
#include
#include
int readdata(void* data,int size, int offset, char* filename)
{
if(data == NULL || size == 0 || filename == NULL)
{
return -1;
}
FILE* fp = fopen(filename,"rb");
if(fp == NULL)
{
return -1;
}
if(fseek(fp,offset,SEEK_SET) != 0)
{
fclose(fp);
return -1;
}
fread(data,size,1,fp);
if(ferror(fp))
{
fclose(fp);
return -1;
}
fclose(fp);
return 1;
}
< /code>
readapi.h
< /code>
#include
#include
int readdata(void* data,int size, int offset, char* filename)
< /code>
Test.cpp
< /code>
#include
#include"readapi.h"
TEST(test, Test1fseek)
{
// When fseek called in readdata API call mock fseek to hit fseek fail
// fseek(){return -1;}
char data[10] = {0};
int status = readdata(data,sizeof(data),0,"test.txt");
EXPECT_EQ(status, -1);
}
TEST(test, Test2fread)
{
//When fread called in readdata API call mock fread to hit read fail
// fread(){return -1;}
char data[10] = {0};
int status = readdata(data,sizeof(data),0,"test.txt");
EXPECT_EQ(status, -1);
}
int main()
{
return RUN_ALL_TEST();
}
Подробнее здесь: https://stackoverflow.com/questions/710 ... googlemock
Как издеваться над системным вызовом в модельном тестировании C ++ во время выполнения с помощью Googlemock? ⇐ C++
Программы на C++. Форум разработчиков
1750335427
Anonymous
У меня есть модуль, записанный на C., в котором я определен API, определяемый следующим образом. < /p>
int ReadData(void* data, int data_size, char* filename, int offset)
При тестировании модуля, чтобы покрыть полное покрытие, мне нужно нажать в условиях ошибки для вызова системы FSEEK и Fread.
Может ли кто -нибудь объяснить мне, как я могу переопределить Fseek/Fread во время конкретного тестового случая, чтобы вместо системы вызовы он позвонил в Mockeek/Fread для этого тестового случая?ReadAPI.c
< /code>
#include
#include
int readdata(void* data,int size, int offset, char* filename)
{
if(data == NULL || size == 0 || filename == NULL)
{
return -1;
}
FILE* fp = fopen(filename,"rb");
if(fp == NULL)
{
return -1;
}
if(fseek(fp,offset,SEEK_SET) != 0)
{
fclose(fp);
return -1;
}
fread(data,size,1,fp);
if(ferror(fp))
{
fclose(fp);
return -1;
}
fclose(fp);
return 1;
}
< /code>
readapi.h
< /code>
#include
#include
int readdata(void* data,int size, int offset, char* filename)
< /code>
Test.cpp
< /code>
#include
#include"readapi.h"
TEST(test, Test1fseek)
{
// When fseek called in readdata API call mock fseek to hit fseek fail
// fseek(){return -1;}
char data[10] = {0};
int status = readdata(data,sizeof(data),0,"test.txt");
EXPECT_EQ(status, -1);
}
TEST(test, Test2fread)
{
//When fread called in readdata API call mock fread to hit read fail
// fread(){return -1;}
char data[10] = {0};
int status = readdata(data,sizeof(data),0,"test.txt");
EXPECT_EQ(status, -1);
}
int main()
{
return RUN_ALL_TEST();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/71088486/how-to-mock-system-call-in-c-unit-testing-during-runtime-using-googlemock[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия