驱动模块实践

      本人首先将“反转字符串”这个问题通过C++编程,然后设计测试用例,编写驱动模块进行测试(虽然与程序员测试自己的代码原则相冲突,但重点在于实践)。

      其中将测试用例写入test.txt文件中,每个测试用例的下一行是期望测试结果(测试用例为空时除外),最后将测试结果存入testresult.txt文件中。

      实现“反转字符串”的代码如下: 

class Reverse
{
public:
	void swap(char *begin, char *end)
	{
		if ((begin == nullptr) || (end == nullptr))
			return;
		char temp = *begin;
		*begin = *end;
		*end = temp;
	}
	char *reverse(char *queue,int length)
	{
		if ((queue == nullptr) || (length <= 0))
			return 0;
		int begin = 0;
		int end = length - 1;
		while (begin < end)
		{
			swap(&queue[begin], &queue[end]);
			begin++;
			end--;
		}
		return queue;
	}
};

      测试驱动模块代码如下:

void test()
{
	FILE *fp,*result;
	Reverse re;
	fp = fopen("E:\\test.txt", "r");    //打开编写测试用例的文件
	result = fopen("E:\\testresults.txt", "a");    //打开导出测试结果的文件
	char buf[MAXSIZE];      //按行读取字符串,将测试用例存在buf数组中
	char expresult[MAXSIZE];    //读取下一行字符串,为期望结果,存在expresult数组中
	int len;
	if ((fp = fopen("E:\\test.txt", "r")) == NULL)    //检查文件是否正确打开
	{
		perror("fail to read");
		exit(1);
	}
	if ((result = fopen("E:\\testresults.txt", "a")) == NULL)
	{
		perror("fail to read");
		exit(1);
	}
	int i = 0;
	while (fgets(buf, MAXSIZE, fp) != NULL)    //循环读取测试用例
	{
		if (*buf == '\n')     //当测试用例为空的情况
		{
			fputs("输入为空!\n", result);
			continue;
		}
		fgets(expresult, MAXSIZE, fp);     //读取期望结果
		len = strlen(buf);
		buf[len - 1] = '\0';  
		re.reverse(buf, len-1);        //对字符串进行反转
		for (i; i < len-1; i++)       //将反转结果与期望结果一一比较
		{
			if (buf[i] != expresult[i])   //如果与期望结果不符合,将测试结果写入测试文档中
				break;
		}
		if(i==len-1)
			fputs("test success!\n", result);
		else
			fputs("test fail!\n", result);
	}
}

      文件test.txt中测试用例如下(此处没有设计非常长的字符串):

      

      其中第一行为空。

      文件testresult.txt中测试结果如下:

      

      测试结果符合预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值