-3

我编写了一个 C 代码,它接受一个目录的路径和一个字符串 s。打开目录后,代码会查找具有特定扩展名的文件,并将作为第二个参数给出的字符串写入这些文件的最后一行和后面的 \n。这就是我的全部功能(查找具有特定扩展名的文件并在文件末尾写一些东西)。该函数的 C 代码已完成,但我需要使用 Cunit 为该函数编写一些测试,而且我不知道如何编写它们。我刚刚写下了我想要测试的内容(如下),但我不知道如何使用 Cunit 编写它们。任何人都可以帮助我吗?谢谢

  • 检查用户是否检查字符串 's' 是否为 nULL => 分段错误
  • 当没有“.extension”文件时,检查是否为函数的路径参数提供了错误地址
  • 检查 strcmp 是否比较“.extension”而不是“extension”
  • 检查用户是否使用 == 而不是 strcmp 来比较扩展名
  • 检查字符串's'是否写在新行上
  • 检查字符串 's' 的大小发送到 write => 通过 strlen 发送而没有 \0 并且类型是 size_t
  • 检查文件是否打开以进行写入(而不是只读)
  • 检查字符串 's' 是否转换为 void* 在给它写函数之前
  • 检查是否检查了 open ("fd") 的返回值
  • 检查打开目录的返回值是否被检查(是否为空)
  • 检查是否检查读取目录的返回值(是否为空)
  • 检查是否检查了扩展名(字符串's'没有添加到所有具有其他扩展名的文件中
  • 检查函数是否忽略“。” et '..' 目录 => DT_REG
  • 检查文件打开后是否关闭
  • 检查close的返回值
  • 检查目录打开后是否关闭
  • 检查目录的返回值
4

1 回答 1

2

单元测试是您的代码的一种驱动程序函数(例如main()),即考虑您已经编写了一个函数foo。在foo中,您必须正确处理每一件事/案例。

完成后,您需要使用单元测试对其进行验证,该单元测试会将不同的参数传递给foo并让您知道每件事情是否正常工作。

检查用户是否检查字符串 's' 是否为 nULL => 分段错误

当没有“.extension”文件时,检查是否为函数的路径参数提供了错误地址

检查 strcmp 是否比较“.extension”而不是“extension”

等等这种检查应该写在你的函数foo

考虑这个例子。

int divide(int numerator, int denominator) {

if (denominator == 0)
      return -1; 
else 
      return numerator/denominator;
}

在代码中,您已经完成了自己的检查。现在您必须使用一些单元测试框架或任何其他驱动程序功能来验证它

void main(void) {

/* Pass correct arguments and expect it will return positive */ 
assert(divide(10, 2) > -1);
printf("Test passed for correct arguments\n");


/* Pass wrong arguments and expect it will return -1 */ 
assert(divide(10,0) == -1); 
printf("Test passes for wrong arguments\n);

}

如果您的预期值失败,测试将失败并且您的除法功能不正确。希望这会帮助你。

于 2016-05-13T06:47:20.283 回答