下面来实现以上三个目标:
1、为了获取已执行的测试用例数量、通过的数量和失败的数量,以及测试执行的时间,需要定义一些变量来保存这些信息:
1. int errorCount = 0; 2. int testCount=0; 3. time_t startTime, endTime; |
2、为了获取失败的测试用例信息,需要先定义一个变量来保存错误信息,同时,上面的两个断言函数也需要增加一个参数,用来传递当失败的时候要显示的失败信息。为了方便记录错误的信息,可以添加两个处理错误信息的函数:
1. /* 2. * 存放测试信息和错误信息的全局变量 3. */ 4. char *errors[100] = {""}; 5. int errorCount = 0; 6. int testCount=0; 7. time_t startTime, endTime; 8. /* 9. * 判断是否取值为真 10. */ 11. void assertTrue(char *msg, bool actual) 12. { 13. testCount++; 14. if(actual) 15. { 16. printf("."); 17. } 18. else 19. { 20. printf("F"); 21. addError(msg); 22. } 23. } 24. 25. /* 26. * 判断预期结果和实际结果是否相符 27. */ 28. void assertEquals(char *msg, int expect, int actual) 29. { 30. testCount++; 31. if(expect == actual) 32. { 33. printf("."); 34. } 35. else 36. { 37. printf("F"); 38. addError(msg, expect, actual); 39. } 40. } 41. |
失败信息的处理函数:
1. /* 2. * 添加错误信息 3. */ 4. void addError(char *msg) 5. { 6. char error[100] = "Test '"; 7. strcat(error, msg); 8. strcat(error, "' is failed!"); 9. errors[errorCount] = new char[100]; 10. strcpy(errors[errorCount], error); 11. errorCount ++; 12. } 13. 14. /* 15. * 添加错误信息,带预期结果与实际结果参数 16. */ 17. void addError(char *msg, int expect, int actual) 18. { 19. char error[100] = "Test '"; 20. char num[10]; 21. strcat(error, msg); 22. strcat(error, "' is failed!"); 23. strcat(error, " Expected: "); 24. strcat(error, itoa(expect, num, 10)); 25. strcat(error, " , actual: "); 26. strcat(error, itoa(actual, num, 10)); 27. errors[errorCount] = new char[100]; 28. strcpy(errors[errorCount], error); 29. errorCount ++; 30. } |