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

  • 相关阅读:
    关于SQL Server将一列的多行内容拼接成一行的问题讨论
    Win7 disk.sys无法加载的问题
    mvel2.0语法指南
    让网页不被缓存的解决办法
    让html页面不缓存js的实现方法
    mysql中间件研究(tddl atlas cobar sharding-jdbc)
    jdk环境变量设置理解
    the import cannot be resolved
    Oracle解除表锁定问题
    windows系统中软件开发常用的软件
  • 原文地址:https://www.cnblogs.com/haojie0616/p/10700743.html
Copyright © 2011-2022 走看看