软件工程-单元测试

本关任务:编写一个能计算两个数组的交集的程序。
你的上司现在想要你完成一个功能,就是给你两个数组,然后需要求出这两个素组的交集。例如数组A={1, 2, 3, 5},数组B={2, 2},你的程序的输出就需要是{2}。

/*********Begin********/
int* hash_A = (int*)malloc(100*sizeof(int));
int* hash_B = (int*)malloc(100*sizeof(int));
memset(hash_A, 0, 100);
memset(hash_B, 0, 100); 
for(int i =0; i < lenA; ++i)
{hash_A[A[i]]++;}
for(int i=0;i < lenB; ++i)
{
	hash_B[B[i]]++;
}
int total = 0;
for(int i = 0; i < 100; ++i)
{
	if(hash_A[i]>0 && hash_B[i]>0)
		total++;
}
int* result = (int* )malloc(total*sizeof(int));
int cur_index = 0;
for(int i = 0; i < 100; ++i){
	if(hash_A[i]>0 && hash_B[i]>0)
		result[cur_index++] = i;
}
*C=result;
*lenC =total;
	/*********End*********/

本关任务:编写代码进行单元测试。

#include"func.h"
#include<stdio.h>

void intersection(int* A, int* B, int lenA, int lenB, int** C, int* lenC);

void UnitTest()
{
	/*请按照测试用例来测试交集功能*/
	int pass_count = 4;
	int err_count = 0;
	int total_count = 4;
	/*********Begin*********/
//这里面全部删掉就可以了。。。。。。。。。。。
	/*********End*********/
	printf("pass_count=%d, err_count=%d, total_count=%d\n", pass_count, err_count, total_count);
}

本关任务:使用 CuTest 实现单元测试。

#include "CuTest.h"
#include"func.h"
#include<stdio.h>

//计算两个数组的交集,并将结果转换成字符串返回
char* intersection(int* A, int* B, int lenA, int lenB);


void TestCase1(CuTest *tc) 
{
	//测试用例1
	/*********Begin*********/
	int A[] = {0,99,1,5,4,8,1,4};
	int B[] = {12,44,4,8,0,99,1};
	char* actual = intersection(A,B,8,7);
	char* excepect = "99, 8, 4, 1, 0";
	CuAssertStrEquals(tc,excepect,actual);
	/*********End*********/
}

void TestCase2(CuTest *tc) 
{
	//测试用例2
	/*********Begin*********/
	int A[] = {0};
	int B[] = {0};
	char* actual = intersection(A,B,1,1);
	char* excepect = "0";
	CuAssertStrEquals(tc,excepect,actual);

	/*********End*********/
}

void TestCase3(CuTest *tc) 
{
	//测试用例3
	/*********Begin*********/

	int A[] = {1,2,3,4,5};
	int B[] = {5,3,2,4,1};
	char* actual = intersection(A,B,5,5);
	char* excepect = "5, 4, 3, 2, 1";
	CuAssertStrEquals(tc,excepect,actual);
	/*********End*********/
}

void TestCase4(CuTest *tc) 
{
	//测试用例4
	/*********Begin*********/

	int A[] = {6,6,6,6,6,6};
	int B[] = {6,6,6,6,6,6};
	char* actual = intersection(A,B,7,1);
	char* excepect = "6";
	CuAssertStrEquals(tc,excepect,actual);
	/*********End*********/
}

CuSuite* GetSuite() {
    CuSuite* suite = CuSuiteNew();
    SUITE_ADD_TEST(suite, TestCase1);
    SUITE_ADD_TEST(suite, TestCase2);
    SUITE_ADD_TEST(suite, TestCase3);
	SUITE_ADD_TEST(suite, TestCase4);
    return suite;
}


void RunAllTests() 
{
	/*
	运行所有的测试用例
	*/
    CuString *output = CuStringNew();
    CuSuite* suite = CuSuiteNew();

	/*********Begin*********/
	CuSuiteAddSuite(suite,GetSuite());

	/*********End*********/
	CuSuiteRun(suite);
    CuSuiteSummary(suite, output);
    CuSuiteDetails(suite, output);
    printf("%s\n", output->buffer);
}
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值