我用单位测试的单位函数测试了我的C代码。它显示错误和分段错误?在单元测试失败后,通常会出现分段错误吗?或者我的代码有问题? 因为,当我更正错误时,它会成功运行
time.c
//gets start time and duration in 24 hour format and returns the total of the two in 24 hour clock
int add_time(int starttime, int duration)
{
int startHour = starttime / 100;
int startMinute = starttime % 100;
int durationHour = duration / 100;
int durationMinute = duration % 100;
int finishHour = startHour + durationHour;
int finishMinute = startMinute + durationMinute;
if(finishMinute > 59)
{
finishMinute %= 60;
finishHour++;
}
finishHour %= 24;
return (finishHour * 100 + finishMinute);
}
//given end and start time, calculates the duration in 24 hour clock (duration is always less than one day)
int duration(int endtime, int starttime)
{
if(endtime < starttime)
endtime += 2400;
int endHour = endtime / 100;
int endMinute = endtime % 100;
int startHour = starttime / 100;
int startMinute = starttime % 100;
int durationMinute = endMinute - startMinute;
int durationHour = endHour - startHour;
if(durationMinute < 0)
{
durationMinute += 60;
durationHour--;
}
return (durationHour * 100 + durationMinute);
}
testtime.c
#include "unity.h"
#include "time.c"
setUp()
{
}
tearDown()
{
}
void firstTest()
{
TEST_ASSERT_EQUAL_INT(1, add_time(2359, 2));
TEST_ASSERT_EQUAL_INT(1530, add_time(1215, 315));
TEST_ASSERT_EQUAL_INT(2215, add_time(2345, 2230));
}
int main()
{
firstTest();
return 0;
}
答案 0 :(得分:2)
说单元测试失败后通常会出现段错误是不正确的。但是,当代码错误时,通常通常会出现seg-faults和其他错误。
您无法真正概括与特定框架或技术相关的段错误(在本例中为单元测试)。在您调查错误原因之前,您只知道发生了错误。
尝试在调试器中运行不正确的代码并确定segfault的确切位置?它是在您的代码中还是在单元测试框架中?
答案 1 :(得分:1)
您似乎正在使用Unity进行测试。 尝试制作这样的主要方法:
int main()
{
UNITY_BEGIN();
if (TEST_PROTECT()) {
RUN_TEST(firstTest);
}
UNITY_END();
}