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

    vs2017下基于c++的VSTS的单元测试实践

    测试工具

    程序功能编写

    tou.h

    class sizeyunsuan
    {
    public:
        sizeyunsuan(int x = 0, int y = 0) :x(x), y(y) {}
        ~sizeyunsuan() {};
        double jia(double x, double y);
        double jian(double x, double y);
        double cheng(double x, double y);
        double chu(double x, double y);
        double x, y;
    };
    

    源.cpp

    #include "tou.h"
    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    double sizeyunsuan::jia(double x, double y) {
    	return x + y;
    }
    double sizeyunsuan::jian(double x, double y) {
    	return x - y;
    }
    
    	int main()
    	{
    		double x, y;
    		cin >> x >> y;
    		double he, cha;
    		sizeyunsuan shu(x, y);
    		he = shu.jia(x, y); cha = shu.jian(x, y);
    		cout << he << endl;
    		cout << cha << endl;
    		//cin >> x;
    		return 0;
    	}
    

    单元测试实现

    在原有项目所在的解决方案下新建一个本机单元测试项目,并在引用中加入原有项目。

    还需要添加依赖项,设置obj

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "../第二次作业/tou.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    
    namespace UnitTes2
    {		
    	TEST_CLASS(UnitTest1)
    	{
    	public:
    		
    		TEST_METHOD(TestMethod1)
    		{
    			sizeyunsuan a;
    			double  x = 3, y = 5;
    			Assert::AreEqual(8.0, a.jia(x, y),DBL_EPSILON);
    			//Assert::AreEqual(2.0, a.jia(y, x),DBL_EPSILON);
    
    		}
    		TEST_METHOD(TestMethod2)
    		{
    			sizeyunsuan b;
    			double x = 3, y = 5;
    			Assert::AreEqual(2.0, b.jia(y, x), DBL_EPSILON);
    		}
    
    	};
    }
    

    测试错误及分析

    上面这个图片显示都错误,因为我设置的第二组数据他过不了。所以整个就显示错误了
    我接下来用另一种方法,建立两个函数

    上面显示第一组数据是正确的,与预期一致
    一开始还有一种错误,如下

    组名称: UnitTes2
    分组依据: Hierarchy
    组全名: UnitTes2
    持续时间: 0:00:00.4819263
    1 个测试失败
    0 个测试跳过
    0 个测试通过
    
    结果1 名称:	TestMethod1
    结果1 结果:	失败
    结果1 持续时间:	0:00:00.4819263
    结果1 StackTrace:	at UnitTes2::UnitTest1::TestMethod1() in f:软件工程unittes2unittest1.cpp:line 17
    结果1 消息:	Assert failed. Expected:<2> Actual:<8>
    结果1 StandardOutput:
    结果1 StandardError:
    
    

    出现这种错误的原因是我设置的变量是double型,变量加减有误差,所以这样,解决放大就是加一个DBL_EPSILON

  • 相关阅读:
    2019 | 开启新的堕落生活
    2018博客之星评选,我非常需要您宝贵的一票!♪(・ω・)ノ
    前端开发 2018 回顾
    全栈设计模式套餐MVVM, RESTful, MVC的历史探索
    停止学习框架
    那些被浏览器阻止的模拟事件...
    Just Cause系列游戏品鉴
    GPU硬件加速原理 /转
    快速上手最棒的网格框架ag-Grid
    用户数据验证的正确姿势之assert
  • 原文地址:https://www.cnblogs.com/haojie0616/p/10700743.html
Copyright © 2011-2022 走看看