zoukankan      html  css  js  c++  java
  • 软件工程(2019)第二次作业

    一、选择开发工具


    我常用的语言为CC++,所以选择Microsoft Visual Studio 2017(简称VS2017),因为VS2017是一个功能比较全面的编译软件,编程、调试、包装几乎一应俱全。以下是我已安装的VS2017的编译环境的应用界面。

    二、练习自动单元测试技术


    接下来进行单元测试练习。举一个简单例子,代码如下:

    #include<stdio.h>
    int getOddCount(int number)
    {
    	int nCount = 0;
    
    	for (int i = 0; i <= number; i++)
    	{
    		if (i % 2 != 0)
    		{
    			nCount++;
    		}
    	}
    
    	return nCount;
    }
    
    int getEvenCount(int number)
    {
    	int nCount = 0;
    
    	for (int i = 0; i <= number; i++)
    	{
    		if (i % 2 == 0)
    		{
    			nCount++;
    		}
    	}
    	return nCount;
    }
    int main()
    {
    	int a;
    	scanf_s("%d", &a);
    	printf("%d",getEvenCount(a));
    	while (1);
    	return 0;
    }
    

    这是一段判断0到N中奇数和偶数个数的代码。接下我将以它为例详细操作一下。
    单元测试大致分为创建测试项目添加引用编写测试程序运行测试这几个步骤。

    1、创建测试项目

    首先我们鼠标右键已有项目上方的解决方案,选择添加选项,点击新建项目一栏,结果如下图所示:

    按照图中选择"Visual C++"-->"测试"-->"本机单元测试项目"即可完成创建测试项目。


    2、添加引用

    为了测试程序可以成功调用源程序数据库,需要在测试项目的引用中进行被测试项目的添加,建立依赖关系,如图所示:

    按照图中点击"引用"-->"添加引用"-->"项目"选择被测项目。

    3、编写测试程序

    点击测试项目源文件里的unittest1.cpp文件,如图所示:

    编写测试程序,通过宏 TEST_METHOD包裹的方法都将成为单独的一个测试单元,如图所示:

    测试中主要使用了Assert::AreEqual 来进行执行预期的判断操作,进行比较,若与预期判断不等,则会出现“测试错误”提示。
    测试函数如下:

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "../单元测试/text.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    
    namespace UnitTest1
    {		
    	TEST_CLASS(UnitTest1)
    	{
    	public:
    		
    		TEST_METHOD(TestMethod1)
    		{
    			Assert::AreEqual(getOddCount(10), 5);// TODO: 在此输入测试代码
    		}
    		TEST_METHOD(TestMethod2)
    		{
                Assert::AreEqual(getOddCount(0), 0);
    		}
    		TEST_METHOD(TestMethod3)
    		{
    			Assert::AreEqual(getEvenCount(0), 1);
    		}
    		TEST_METHOD(TestMethod4)
    		{
    			Assert::AreEqual(getEvenCount(10), 5);
    		}
    	};
    }
    

    - **注意**:对于被测项目你需要建立一个头文件用于存放被测试函数,在测试文件中需要应用这个头文件(这个头文件一定要在测试项目“引用”前建立好!)。 ![](https://img2018.cnblogs.com/blog/1646918/201904/1646918-20190413001753538-1173096039.png) 头文件内容如下: ``` #pragma once int getOddCount(int number) { int nCount = 0;
    for (int i = 0; i <= number; i++)
    {
    	if (i % 2 != 0)
    	{
    		nCount++;
    	}
    }
    
    return nCount;
    

    }
    int getEvenCount(int number)
    {
    int nCount = 0;

    for (int i = 0; i <= number; i++)
    {
    	if (i % 2 == 0)
    	{
    		nCount++;
    	}
    }
    return nCount;
    

    }

    <br>
    #### <font color=#d2691e>4、运行测试</font>
    (1)对于一般函数,点击**测试**一栏中的**运行**选项,点击**所有测试**即可。
    测试结果如图所示:
    ![](https://img2018.cnblogs.com/blog/1646918/201904/1646918-20190413004847924-843857735.png)
    (2)但对于类中函数而言需要进行以下步骤:右键点击**测试项目**,选择**属性**一栏,对于弹出界面进行如下操作:
    ![](https://img2018.cnblogs.com/blog/1646918/201904/1646918-20190413003113335-785972005.png)
    进行如下操作,添加**obj**文件:
    ![](https://img2018.cnblogs.com/blog/1646918/201904/1646918-20190413003345897-1378031174.png)
    之后即可进行正常测试。
    <br>
    - <font color=#d2691e size=4 face="宋体">**总结**</font>
    ---
    对于VS2017版的测试环境,用起来还是较为舒适的,本次的练习于我而言有很大的帮助,使我使用VS2017的测试单元更加的得心应手。
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/haochenz/p/10698900.html
Copyright © 2011-2022 走看看