精华内容
下载资源
问答
  • GO程序单元测试案例编写与Gogland运行单元测试方法

    一,GO语言为我们准备好了测试框架!

    单元测试文件的执行需要单元测试框架,GO语言已经为我们准备好了,Go语言中自带有一个轻量级的测试框架testing,可以使用"go test"命令来实现单元测试和性能测试!无须进行任何其它安装或配置,我们就可以编写GO程序的单元测试程序了!!

    二,GO语言的单元测试程序应该放到哪里?

    我看到很多文章说GO语言的测试程序应该放到一个统一的目录中,但是实际上并不需要那样做。你可以把GO语言的单元测试文件放到任意你想放的地方!!!

    一般单元测试文件程序都是随着程序的开发同步编写,一个功能结束后,就应该编写单元测试文件了,而且还有一点,一个单元测试文件中可能会包含多个单元测试方法,我们通常不会全部执行这个单元测试文件中的所有单元测试方法。以我以往的编写单元测试程序的经验来说,通常都是单独执行一个单元测试文件的某个单元测试方法!!在这样的情况下,单元测试文件存放到什么地方都无所谓,只要能够正常执行需要测试的单元测试文件和单元测试方法就可以了!!!

    三,在Gogland中编写单元测试程序。

    在正式编写单元测试文件之前,我们应该记住这些GO语言单元测试文件的编写规则!!

    • 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码
    • 你必须import testing这个包
    • 所有的测试用例函数必须是Test开头
    • 测试用例会按照源代码中写的顺序依次执行
    • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态
    • 测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。
    • 函数中通过调用testing.T的Error, Errorf, FailNow, Fatal, FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

    下面是被测试文件和单元测试文件代码:

    structFunc.go : 这是要被测试的程序文件,我想对"StructFunc"函数进行单元测试,这个函数是这个程序文件中的一个!

    package mydata
    
    //自定义的结构,首字母大写可以被导出,包括里面的字段首字母大写才被输出
    type TestStruct struct {
    	Id string
    	Name string
    }
    
    //这是一个结构函数,返回两个值,输入为方法接收者
    func (ts *TestStruct) StructFunc (idIn,nameIn string) (idOut,nameOut string){
    
    	ts.Id=idIn;
    	ts.Name=nameIn;
    
    	return ts.Id,ts.Name
    }
    
    //这是另外一个结构函数,返回结构,输入为方法接收者
    func (ts *TestStruct) StructFunc2 (idIn,nameIn string) TestStruct{
    
    	ts.Id=idIn;
    	ts.Name=nameIn;
    
    	return *ts
    }
    
    //这是普通函数,函数名前面没有方法接收者
    func  OrdinaryFunc (input1,input2 string) (outPut string){
    
    	temp:=input1+input2
    
    	return temp
    }
    

    structFunc_test.go : 这是上面的单元测试程序,仅仅测试"StructFunc"函数。

    package mydata
    
    import (
    	"testing"
    )
    
    //StructFunc的测试方法
    func TestStructFunc(t *testing.T) {
    
    	//声明结构函数输入的变量
    	var (
    		idIn   string
    		nameIn string
    	)
    
    	//给结构函数输入的变量赋值
    	idIn = "inputId"
    	nameIn = "inputName"
    
    	//得到结构
    	ts := &TestStruct{}
    
    	//调用结构函数1
    	idOut, nameOut := ts.StructFunc(idIn, nameIn)
    
    	if idOut==idIn&&nameOut==nameIn{
    		t.Log("测试通过!")
    	}else{
    		t.Error("函数执行错误")
    	}
    
    }
    

    四,在Gogland中随意执行任意单元测试方法。

    在任意一个单元测试文件中的任意一个单元测试方法,都应该可以被单独执行,在Gogland确实可以这样做!!!

    1,打开要执行测试的单元测试程序,随后有鼠标左键选中要执行测试的测试方法。

    2,在选中的单元测试方法上面鼠标右键,随后在弹出菜单中执行对应命令。

    3,这是执行单元测试方法后的截图,表明当前被测试方法完全正确,通过对它的单元测试了!

    4,对其它单元测试方法,同样用鼠标右键,在弹出菜单中执行对应命令就可以了。下面是我对新增的一个单元测试方法进行的单元测试截图。

    5,我们可以把单元文件存放到任意位置执行,我把上面的单元测试文件拷贝到"mydata"包中进行单元测试,一样顺利进行了单元测试,下面是截图:

     一点建议:虽然我们可以把单元测试程序放到任意地方,不过为了维护方便,我还是建议存放到一个固定位置,我把我所有的单元测试程序都存放到”test“包中了!

    展开全文
  • 新手小白学JAVA JUnit单元测试方法

    千次阅读 多人点赞 2021-08-20 17:22:09
    JUnit单元测试 1.前言 之前我们去运行程序只能通过main(),也...单元测试方法是程序运行的最小单位,方法与方法之间并没有关系,独立运行,所以非常的灵活,推荐使用 3.格式 修饰符必须是public 返回值类型必须是void

    JUnit单元测试

    1.前言

    之前我们去运行程序只能通过main(),也就是程序的主函数来运行,那么就会出现这样的问题:我们如果想要测试,就需要运行main()中所有的代码,这会导致,本来我们只是想测试A方法,但是B C 方法也执行了,或者需要我们手动注释掉不用的方法在main()中的调用,很不方便
    所以我们接下来学习一个单元测试框架,也称作JUnit 单元测试工具,这是一个第三方开源工具。
    eclipse与IDEA都集成了JUnit,我们只需要在项目中引入JUnit对应的 jar 包,就可以使用啦
    的学习还是很有必要的

    2. 概念

    单元测试方法是程序运行的最小单位,方法与方法之间并没有关系,独立运行,互补影响,所以非常的灵活,推荐使用

    3.格式

    1. 修饰符必须是public
    2. 返回值类型必须是void
    3. 方法的参数列表必须为空
    4. 本方法必须使用@Test注解做标记,标记这是一个单元测试方法
      注意:单元测试工具初次使用时,必须导包,我们可以选择:
      Add JUnit4 to the build Path
      成功导入后,程序会出现:import org.junit.Test;
      在这里插入图片描述

    4.执行方式:

    选中方法名前面的小三角,然后选择选项:Run ‘ 方法名’
    在这里插入图片描述

    如果出现绿色的小对勾,说明程序没有问题

    在这里插入图片描述

    如果出现红色的小叹号,说明程序运行没有通过,直到下一次成功运行之前,一直是红色叹号的方式

    在这里插入图片描述
    在这里插入图片描述
    以上就是单元运行测试的入门啦,还是要多使用才能熟练哦,加油~

    5. 问题解决:

    如果使用IDEA写单元测试时:遇到了控制台不能输入的问题,这里是解决方案哦:

    IDEA 单元测试方法JUnit控制台不能输入数据 解决方案

    展开全文
  • C#的单元测试方法

    万次阅读 2017-02-16 12:21:50
    是软件测试方法的其中一种,其中还有比如动态黑盒测试、数据测试、破坏性测试等等。 单元测试也称之为“模块测试”,是对程序设计中的最小单元——函数进行测试的一种方法,所谓测试,就是验证我们自己编写的方法能...

    一、         单元测试

    是软件测试方法的其中一种,其中还有比如动态黑盒测试、数据测试、破坏性测试等等。

    单元测试也称之为“模块测试”,是对程序设计中的最小单元——函数进行测试的一种方法,所谓测试,就是验证我们自己编写的方法能不能够得到正确的结果,即用方法得到的结果与真实结果进行比对,这就称之为测试。建立单元测试首先需要建立一个测试项目,具体操作如下:

     

    二、          控制台程序的单元测试

    1、 首先建立一个类库项目,里面包含一个计算类Calculate.cs,该类里面包含一个计算加法的方法Add,声明如下:

    namespace核心类

    {

       publicclassCalculate

       {

           publicdouble Add(double d1,double d2)

           {

                return d1 + d2;

           }

       }

    }

    生成项目之后会有一个“核心类.dll,

    那么这个方法需要进行测试,就要建立一个测试项目,建立对应的测试项目有两种方法:

     

    2、 建立测试项目

    方法一、

    在解决方案中再添加一个新的测试项目,“右击/添加/新建项目”,在左侧选择“测试”模板,确定即可,如下

    namespace测试类

    {

       [TestClass]

       publicclassCalculateTest1

       {

           [TestMethod]

           publicvoid AddMethod1()

           {

                Calculate cal = newCalculate();

                double d1 = 110;

                double d2 = 220;

                Assert.AreEqual(cal.Add(d1,d2),230);

           }

       }

    }

    注意我们需要手动更改类名和方法名,都改成以Test1和Method1结尾。生成解决方案的时候,我们打开“测试资源管理器窗口”及执行菜单命令“测试/窗口/测试资源管理器”就可以了,然后就可以看见每一个对应的方法所对应的测试方法名称,我们可以选择运行单个方法,也可以选择运行所有的测试方法。那么测试的方法体怎么去写呢?

    由于测试本来的意义就是验证一个方法你能不能得到正确的计算结果,所以我们需要找出一个正确的计算结果,与方法计算的结果进行比较就可以了,实现如下:

    using System;

    usingMicrosoft.VisualStudio.TestTools.UnitTesting;

    using核心类;   //这里需要先手动添加自定义的程序集

     

    namespace测试类

    {

       [TestClass]

       publicclassCalculateTest1

       {

           [TestMethod]

           publicvoid AddMethod1()   //这是方法体部分

           {

                Calculate cal = newCalculate();

                double d1 = 110;

                double d2 = 220;

                Assert.AreEqual(cal.Add(d1,d2),330);  //使用Assert静态类

           }

       }

    }

    然后在测试资源管理器中运行该方法的测试结果,运行能够正常通过,如果将上面的330改为230,很显然,两者结果不相等,测试不通过,会在测试资源管理器中显示出来。

     

    方法二、

    不需要手动添加测试项目,让VS自动完成,具体操作如下:

    在需要进行测试的方法上即Add上“右击/创建单元测试”,VS会自动创建一个测试项目,如下所示:

    namespace核心类.Tests

    {

       [TestClass()]

       publicclassCalculateTests

       {

           [TestMethod()]

           publicvoid AddTest()

           {

                Calculate cal = newCalculate();

                Assert.AreEqual(cal.Add(200, 300), 500);

           }

       }

    }

    测试方法体是自己添加的。其他的操作一样。

     

    三、    注意事项

    在测试类中必须要引入的命名空间

    usingMicrosoft.VisualStudio.TestTools.UnitTesting;

    自动创建的测试项目我们不用管,但是如果是自己手动创建的测试项目还必须手动添加程序集

    Microsoft.VisualStudio.QualityTools.UnitTestFramework

     

    1、测试项目和被测试项目之间的名称是具有关系的,具体如下对应关系

    (测试项目名——测试项目名Tests

    (命名空间——命名空间.Tests

    (测试类名——测试类名Tests

    (测试方法——测试方法Test

    2、在测试类中,类必须使用特性[TestClass()]或者是[TestClass]修饰,测试的方法必须使用[TestMethod()]或者是[TestMethod]修饰,

    3、测试方法的返回类型必须为void ,并且测试函数不能够有参数

    4、在测试方法中的代码一般都是分为以下两个步骤

    (1)   创建测试类的对象Calculate cal = newCalculate();

    (2)   使用断言来判断测试结果Assert.AreEqual(cal.Add(200, 300), 500);

        5、Assert静态类的相关判断方法(自己去查看定义即可)

     

    展开全文
  • Python之pytest单元测试方法

    千次阅读 2019-03-21 18:08:57
    1 单元测试 单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;...

    参考:https://zhuanlan.zhihu.com/p/29968920

    1 单元测试

    单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。

    为什么要进行单元测试? 测试除了保证程序的健壮性外,是可以让你重新思考代码的设计的。引用Axb博客的话:

    编写单元测试的难易程度能够直接反应出代码的设计水平,能写出单元测试和写不出单元测试之间体现了编程能力上的巨大的鸿沟。无论是什么样的程序员,坚持编写一段时间的单元测试之后,都会明显感受到代码设计能力的巨大提升。

    如果发现代码难以构造测试,很有可能就是接口设计不够优雅,或者耦合严重,尝试从测试的角度思考能够让我们更好地设计。单元测试同时也为重构提供了保证,比如我们想优化一个函数内部实现,更换更优的数据结构和算法,只需要重新跑一下测试就可以验证新的实现是否引入了错误或bug。

    总的来说,单元测试有以下好处:

    • 确保代码质量
    • 改善代码设计,难以测试的代码一般是设计不够简洁的代码。
    • 保证重构不会引入新问题,以函数为单位进行重构的时候,只需要重新跑测试就基本可以保证重构没引入新问题。

    2 框架选择

    关于单元测试,有很多现成的框架,其特点如下

    • unittest,内置库,模仿PyUnit写的,简洁易用,缺点是比较繁琐。
    • nose,测试发现,发现并运行测试。
    • pytest,写起来很方便,并且很多知名开源项目在用,推荐。
    • mock,替换掉网络调用或者 rpc 请求等

    根据pytest官方网站介绍,它具有如下特点

    • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
    • 能够支持简单的单元测试和复杂的功能测试
    • 支持参数化
    • 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败
    • 支持重复执行失败的case
    • 支持运行由nose, unittest编写的测试case
    • 具有很多第三方插件,并且可以自定义扩展
    • 方便的和持续集成工具集成

    由于pytest使用起来比较方便,因此选择pytest作为python代码单元测试的工具,关于pytest的具体介绍和使用方法,可参考官网文档

    3 安装

    直接用pip安装即可

    sudo pip install -U pytest

    安装完之后可用以下方法验证

    py.test --version

    4 单个测试

    此处参考官网示例,新建一个测试文件

    # test_sample.py的内容 
    def func(x):
        return x + 1
    
    def test_answer():
        assert func(3) == 5

    直接在脚本目录中运行pytest,输出如下

    nvidia@tegra-ubuntu:~/test$ pytest
    ============================= test session starts ==============================
    platform linux -- Python 3.5.2, pytest-4.3.1, py-1.8.0, pluggy-0.9.0
    rootdir: /home/nvidia/test, inifile:
    collected 1 item                                                               
    
    test_sample.py F                                                         [100%]
    
    =================================== FAILURES ===================================
    _________________________________ test_answer __________________________________
    
        def test_answer():
    >       assert func(3) == 5
    E       assert 4 == 5
    E        +  where 4 = func(3)
    
    test_sample.py:6: AssertionError
    =========================== 1 failed in 0.11 seconds ===========================
    

    执行测试的时候,我们只需要在测试文件test_sample所在的目录下,运行pytest即可。pytest会在当前的目录下,寻找以test开头的文件(即测试文件),找到测试文件之后,进入到测试文件中寻找test_开头的测试函数并执行。通过上面的测试输出,我们可以看到该测试过程中,一个收集到了一个测试函数,测试结果是失败的(标记为F),并且在FAILURES部分输出了详细的错误信息,帮助我们分析测试原因,我们可以看到"assert func(3) == 5"这条语句出错了,错误的原因是func(3)=4,然后我们断言func(3) 等于 5。

    5 多个测试

    我们在实际应用时,往往不只包含一个测试,需要测试多个部分,这个时候可以写个类来实现

    # content of test_class.py
    class TestClass(object):
        def test_one(self):
            x = "this"
            assert 'h' in x
    
        def test_two(self):
            x = "hello"
            assert hasattr(x, 'check')

    运行测试后输出如下 

    nvidia@tegra-ubuntu:~/test$ pytest test_class.py
    ============================= test session starts ==============================
    platform linux -- Python 3.5.2, pytest-4.3.1, py-1.8.0, pluggy-0.9.0
    rootdir: /home/nvidia/test, inifile:
    collected 2 items                                                              
    
    test_class.py .F                                                         [100%]
    
    =================================== FAILURES ===================================
    ______________________________ TestClass.test_two ______________________________
    
    self = <test_class.TestClass object at 0x7f76fe74a8>
    
        def test_two(self):
            x = "hello"
    >       assert hasattr(x, 'check')
    E       AssertionError: assert False
    E        +  where False = hasattr('hello', 'check')
    
    test_class.py:9: AssertionError
    ====================== 1 failed, 1 passed in 0.08 seconds ======================
    

    可以看到第二个测试报错了,并列出了错误位置和错误原因

    6 总结

    通过上面2个实例,我们发现编写pytest测试样例非常简单,只需要按照下面的规则:

    • 测试文件以test_开头(以_test结尾也可以)
    • 测试类以Test开头,并且不能带有 __init__ 方法
    • 测试函数以test_开头
    • 断言使用基本的assert即可

    执行测试样例的方法很多种,上面第一个实例是直接执行pytest,第二个实例是传递了测试文件给pytest。其实pytest有好多种方法执行测试:

    pytest               # run all tests below current dir
    pytest test_mod.py   # run tests in module
    pytest somepath      # run all tests below somepath
    pytest -k stringexpr # only run tests with names that match the
                         # the "string expression", e.g. "MyClass and not method"
                         # will select TestMyClass.test_something
                         # but not TestMyClass.test_method_simple
    pytest test_mod.py::test_func # only run tests that match the "node ID",
    			       # e.g "test_mod.py::test_func" will select
                                   # only test_func in test_mod.py
    

    pytest可以方便的生成测试报告,即可以生成HTML的测试报告,也可以生成XML格式的测试报告用来与持续集成工具集成。

    生成HTML格式报告:

    pytest test_class.py --resultlog=/home/nvidia/test/test.html

    生成XML格式的报告:

    pytest test_class.py --junitxml=/home/nvidia/test/test.xml
    

     

    展开全文
  • 单元测试方法总结

    千次阅读 2011-11-25 20:14:01
    1 引言 应用系统的实施代码构建完成...虽然测试是一件乏味的工作,但是对自己开发的程序代码进行单元测试是程序员必要的工作,不但可以写出高质量的代码,还可以提高自己的编程水平。本文档主要介绍我们常用的几种单
  • 初步调试Spring Boot测试方法中, 启动出现了以下问题: ction: Consider defining a bean of type 'java.lang.Integer' in your configuration. 2020-07-07 15:57:57.808 ERROR 43332 --- [ main] o.s.test....
  • maven运行指定的单元测试方法

    千次阅读 2019-07-12 09:07:49
    mvn test -Dtest=ImportAdministrativeDivisionTests#importProvinceData -DfailIfNoTests=false mvn test -Dtest=类名#方法名 -DfailIfNoTests=false
  • import org.junit.jupiter.api.Test; //这个类用来测试变量的使用 ... * 单元测试Junit方法 * * 要求:@Test方法 + public + void + 无参 * * @Test注解 (需要导包,4,5都可以) * public...
  • IDEA 运行junit单元测试方法

    万次阅读 2017-03-18 17:15:03
    配置Run,增加Junit 最终配置如下:
  • Spring框架下的单元测试方法

    万次阅读 2013-08-06 15:36:24
    介绍在Spring的框架下,做单元测试的两种办法。 一、使用spring中对Junit框架的整合功能 除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:&lt;dependency&gt; &lt;groupId&gt;...
  • 实际开发完成后,我们经常可能在一个单元测试类中进行多个方法单元测试,但是每次只想对某一个方法进行单元测试,这时我们可以使用@Ignore注解来跳过其他方法,仅仅对指定的某个方法进行单元测试,这里分享一下@...
  • python unittest单元测试方法和用例

    万次阅读 2014-07-24 16:45:45
    python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 先介绍下unittest的基本使用方法: 1.import unittest 2.定义一个继承自unittest.TestCase的测试用例类 3.定义setUp和tearDown,在每...
  • iOS中异步回调的单元测试方法

    千次阅读 2016-08-11 14:33:37
    在XCode6以上版本中,苹果添加了用于异步回调测试的api,因此不用像旧版本那样,发起异步调用后通过循环查询标志位,来检查异步回调函数的调用了。 在新版本中直接使用XCTestExpectation的API即可实现这一功能。...
  • 第一次使用JPA,感觉就是代码简洁。只要接口继承JpaRepository 就能调用默认的方法。如: public interface UserRepository extends JpaRepository&...于是乎,单元测试下 父类的方法: /** ...
  • Android单元测试类继承关系图如下所示:  之所以有那么多XXXTestCase主要是为了简化工作。例如当你想对一个访问数据库的功能进行测试时,首先需要自己启动并初始化数据库。在 这里是类似的,如果你...
  • Android 单元测试方法与步骤

    千次阅读 2014-05-14 11:33:58
    单元测试方法中添加实现:  展开test/cn.ycmoon.test.activity下单元测试类,选择要测试的方法,点右键,选择Run As->Android JUnit Test,就会打开单元测试结果界面。 右该方法无错误,则结果会...
  • 后来试图在IDE中进行测试,经过一段学习,我发现如下方法,现直接给出代发示例: /* 下面的注释已经过时,现在已经替换 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = Caserecomm
  • 我们在执行JUnit测试用例时,有时需要按照定义顺序执行单元测试方法,比如如在测试数据库相关的用例时候要按照测试插入、查询、删除的顺序测试。如果不按照这个顺序测试可能会出现问题,比如删除方法在前面执行,...
  • 从整体的角度可以分为单元测试、集成测试、系统测试、确认测试。 下面内容来自网络相关资料的整理: 1.单元测试 (1)定义:单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的...
  • 从整体的角度可以分为单元测试、集成测试、系统测试、确认测试。 下面内容来自网络相关资料的整理: 1.单元测试 (1)定义:单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验...
  • 目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。 自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下...
  • 因此,掌握基本的单元测试方法是对一个软件开发人员的基本要求。 本文基于作者的实际项目经历,介绍了一种采用得比较多的单元测试方法。 一、软件模块概述 在实际的软件系统中,各个模块之间的关系可以用错综复杂...
  • 如何单元测试Java的private方法

    千次阅读 2020-12-19 01:50:22
    测试方法写进private方法的所属类中,这样就能调用private方法了。 上述解法虽然可行,但这些解法或多或少地违背单元测试应遵守AIR原则。 单元测试在线上运行时,感觉像空气(AIR)那样透明,但在测试质量的保障...
  • java 单元测试JUnit的使用方法

    千次阅读 2018-10-20 15:55:36
    java 单元测试JUnit的使用方法1.什么是JUnit单元测试2.如何使用JUnit单元测试3.代码中使用dome 1.什么是JUnit单元测试 类的运行入口是main方法,但在日常编程的时候,我们很少去写mian()方法来测试当前方法入参...
  • 单元测试-如何测试void方法

    万次阅读 2013-12-13 16:10:46
    在作一个void方法单元测试时,测试人员就比较迷惑了(很多人也都在问void方法怎么测试) , void的方法是没有返回值的方法。那么如何它的结果呢。 在这里和大家一起讨论一下void应该怎么测试。  首先站在测试角度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399,003
精华内容 159,601
关键字:

单元测试方法