《编程珠玑》代码之路8:自动化测试

编程入门 行业动态 更新时间:2024-10-28 20:23:11

《编程<a href=https://www.elefans.com/category/jswz/34/1753184.html style=珠玑》代码之路8:自动化测试"/>

《编程珠玑》代码之路8:自动化测试

这次的内容会比较轻松,一段代码写好了,如何保证它是正确的?

比如就写好了一个二分查找吧,确定它正确?手动的话,估计是个正常人10次就哭了。所以如果能自动执行的话,那就很开心了。

为了做到自动化测试,我们需要用到下面语句:

assert(i >= 0):在i大于或者等于0的时候正常执行,否则报错。

下面给出了一个编写自动化代码测试的姿势:

#include <iostream>
#include <cstdio>
#include <vector>
#include <cassert>using namespace std;vector<int> nums; //存储要搜索数组的vector
int target = 123; //要搜索的目标// 如果不正常的话反回-1
int BinarySearch(vector<int> &arr, int target);int main(){freopen("in.txt", "r", stdin);for (int i = 0; i < 800; ++i){cout << "n = " << i << endl;nums.clear();for (int j = 0; j <= i; ++j){nums.push_back(j * 10);}for (int j = 0; j < i; ++j){assert(BinarySearch(nums, 10 * j) == j);//如果找到的话,检查位置是否正确assert(BinarySearch(nums, 10 * j - 1) == -1);//查找不存在元素,检查是否返回-1。	}}return 0;
}int BinarySearch(vector<int> &arr, int target){if (arr.size() == 0){return -1;}int left = 0, right = arr.size() - 1;while (left <= right){int mid = (left + right) / 2;if (arr[mid] == target){return mid;}else if (arr[mid] < target){left = mid + 1;}else if (arr[mid] > target){right = mid - 1;}else{return -1;}}return -1;
}

可以看到,我们自动化地进行了800次测试,每次生成i个数,每次数组里生成下标*10的数字,那么20就在下标2的位置,0就在0的位置。

这样通过下面两句代码反复测试查找的位置和不存在的元素结果是否正确。

assert(BinarySearch(nums, 10 * j) == j);//如果找到的话,检查位置是否正确
assert(BinarySearch(nums, 10 * j - 1) == -1);//查找不存在元素,检查是否返回-1。	

 

更多推荐

《编程珠玑》代码之路8:自动化测试

本文发布于:2024-02-07 03:41:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:珠玑   之路   代码   测试

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!