Как издеваться над системным вызовом в модельном тестировании C ++ во время выполнения с помощью Googlemock?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как издеваться над системным вызовом в модельном тестировании C ++ во время выполнения с помощью Googlemock?

Сообщение 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();
}



Подробнее здесь: https://stackoverflow.com/questions/710 ... googlemock
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»