软件工程第二次作业
1.选择开发工具
团队作业采用的是C语言编程的,因此选用的开发工具为codeblocks,在codeblocks下配置Googletest测试单元。
2.练习自动单元测试技术
- 配置codeblocks
- 配置截图如下:
- 在新建的工程下右键project,选择Build options...清除Compiler settings > Compile Flags下与-std=有关的复选框点击选项卡Compiler settings > Other options,在对话框中填写-std=gnu++11,
- 在Linker settings > Other linker options下填写-lgtest,点击OK
- 点击选项卡Search directories,在Compiler子选项卡中Add一项,填写解压后的googleTest下的include文件夹路径,如 C:..........\Documents\Googletest\googletest-release-1.7.0\include;
- 在Linker子选项卡中Add一项,填写新建的文件夹路径,如C:..........\Documents\Googletest\googletest-release-1.7.0codeblocks-mingw;
- 在新建的工程下右键project,选择Build options...清除Compiler settings > Compile Flags下与-std=有关的复选框点击选项卡Compiler settings > Other options,在对话框中填写-std=gnu++11,
- 配置截图如下:
- 单元测试
团队项目中我负责一小块代码,这里给出测试的是我暂时的一点点想法及代码,为了测试的方便里面有很多的增添删除及修改:
#include <gtest/gtest.h>
#include<iostream>
#include<gtest/gtest.h>
using namespace std;
int a[10][10]={{0}};//二维数组初始化为零,定为全局变量
int array_orientation(int x,int y,int k){
int as[1][8]={{0}};
int i=0,j;
as[i][k]=-1;
for(j=0;j<8;j++){
switch(j){
case 0:a[x-1][y-1]=as[i][j];break;
case 1:a[x-1][y]=as[i][j];break;
case 2:a[x-1][y+1]=as[i][j];break;
case 3:a[x][y-1]=as[i][j];break;
case 4:a[x][y+1]=as[i][j];break;
case 5:a[x+1][y-1]=as[i][j];break;
case 6:a[x+1][y]=as[i][j];break;
case 7:a[x+1][y+1]=as[i][j];break;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(i==x&&j==y)
a[i][j]=3;
}
}
}
TEST(array_orientationTest, HandleNoneZeroInput)
{
EXPECT_EQ(1, array_orientation(3,3,2));
EXPECT_EQ(0, array_orientation(2,3,2));
}
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
- 单元测试结果如下图所示,其中绿色代表通过,红色代表失败。