junit 订阅
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1]  JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 展开全文
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1]  JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
信息
优    点
极限编程、重构等
建立者
Kent Beck和Erich Gamma
适用范围
编写和运行可重复的测试
中文名
JUnit
性    质
单元测试框架
特    性
用于共享共同测试数据的测试工具等
junit优点
另外junit是在极限编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,但是实际上编写测试代码也是需要耗费很多的时间和精力的,那么使用这个东西好处到底在哪里呢?笔者认为是这样的:极限编程要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。重构其好处和极限编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。其他情况我们在开发的时候使用junit写一些适当的测试也是有必要的,因为一般我们也是需要编写测试的代码的,可能原来不是使用的junit,如果使用junit,而且针对接口(方法)编写测试代码会减少以后的维护工作,例如以后对方法内部的修改(这个就是相当于重构的工作了)。另外就是因为junit有断言功能,如果测试结果不通过会告诉我们哪个测试不通过,为什么,而如果是像以前的一般做法是写一些测试代码看其输出结果,然后再由自己来判断结果是否正确,使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。
收起全文
精华内容
参与话题
问答
  • junit

    2019-09-23 15:40:45
    junit5 API文档 https://junit.org/junit4/javadoc/latest/ 基础使用 junit运行流程 junit注解 junit测试套件 junit参数化

    junit5 API文档

     

     

    https://junit.org/junit4/javadoc/latest/

    基础使用

    junit运行流程

    junit注解

    junit测试套件

     

    junit参数化

    展开全文
  • JUnit

    2019-10-05 23:15:42
    JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作。JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 Java 程序。 2. 第一个 JUnit 单元测试 1. 引入的...

    1. 概述

    JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作。JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 Java 程序。

    2. 第一个 JUnit 单元测试

    1. 引入的依赖

    	   <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    

    2. 测试代码

    public class TestJUnit {
        @Before
        public void before(){
            System.out.println("在测试之前调用!");
        }
        @Test
        public void test(){
            System.out.println("hello JUnit");
        }
        @After
        public void after(){
            System.out.println("在测试之后调用!");
        }
       
    }
    

    输出:

    在测试之前调用!
    hello JUnit
    在测试之后调用!
    
    

    3. 断言

    • 断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。
    @Test
        public void testAssert() {
            String obj1 = "junit";
            String obj2 = "junit";
            String obj3 = "test";
            String obj4 = "test";
            String obj5 = null;
            int var1 = 1;
            int var2 = 2;
            int[] arithmetic1 = {1, 2, 3};
            int[] arithmetic2 = {1, 2, 3};
            //断言两个值相等
            assertEquals(obj1, obj2);
            //断言,两个对象引用相同的对象
            assertSame(obj3, obj4);
            //断言,两个对象不是引用同一个对象
            assertNotSame(obj2, obj4);
            //断言一个对象不为空(null)
            assertNotNull(obj1);
            //断言一个对象为空(null)
            assertNull(obj5);
            //断言一个条件为真
            assertTrue("为真", var1 == var2);
            //断言预期数组和结果数组相等
            assertArrayEquals(arithmetic1, arithmetic2);
        }
    

    输出:

    var1的值不等于var2的值,所以第6个断言不对。

    junit.framework.AssertionFailedError: 为真
    
    	at junit.framework.Assert.fail(Assert.java:57)
    	at junit.framework.Assert.assertTrue(Assert.java:22)
    	at junit.framework.TestCase.assertTrue(TestCase.java:192)
    	at com.huihui.hello.junit.TestJUnit.testAssert(TestJUnit.java:50)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:483)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    
    
    展开全文
  • Junit

    2016-01-20 11:57:35
    Junit是一个java语言的单元测试框架 Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行...

    Junit是一个java语言的单元测试框架

    Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。


    Junit中的部分注解

    A、@Before 注解:与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行;
    B、@After 注解:与junit3.x中的tearDown()方法功能一样,在每个测试方法之后执行;
    C、@BeforeClass 注解:在所有方法执行之前执行;
    D、@AfterClass 注解:在所有方法执行之后执行;


    简单的测试

    import static org.junit.Assert.*;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class Demo2 {
    
    	@Before
    	public void setUp() throws Exception {
    		System.out.println("setUp()");
    	}
    	@Test
    	public void test1() {
    		System.out.println("test1()");
    	}
    	@Test
    	public void test2() {
    		System.out.println("test2()");
    	}
    	@After
    	public void tearDown() throws Exception {
    		System.out.println("tearDwon");
    	}
    }
    


    import static org.junit.Assert.*;
    
    import org.junit.AfterClass;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    public class Demo3 {
    
    	@BeforeClass
    	public static void setUpBeforeClass() throws Exception {
    		System.out.println("setUpBeforeClass()");
    	}
    
    	@AfterClass
    	public static void tearDownAfterClass() throws Exception {
    		System.out.println("tearDownAfterCLass()");
    	}
    
    	@Test
    	public void test1() {
    		System.out.println("Test1()");
    	}
    	@Test
    	public void test2() {
    		System.out.println("Test2()");
    	}
    }
    



    展开全文
  • Spring Boot---(11)SpringBoot使用Junit单元测试

    万次阅读 多人点赞 2018-02-02 17:51:18
    摘要:本文详细的记录了SpringBoot如何结合Junit写测试用例,如何执行,打包执行,忽略执行等操作,SpringBoot内置了Junit测试组件,使用很方便,不用再单独引入其他测试组件。 演示环境: SpringBoot + mybatis...

    摘要:本文详细的记录了SpringBoot如何结合Junit写测试用例,如何执行,打包执行,忽略执行等操作,SpringBoot内置了Junit测试组件,使用很方便,不用再单独引入其他测试组件。

     

    演示环境

    SpringBoot + mybatis

    开发工具:IntelliJ IDEA

     

    1.pom.xml

     

    一般使用idea新建一个SpringBoot web项目时,一般都会自动引入此依赖,如果没有,请手动引入。

     

    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>

     

    2.测试类基类

     

    新建的项目,一般会有test包和test类,结构如下:

    如果没有,我们自己创建一个,由于一个项目中我们会写很多很多测试类,而测试类上面是需要以下几个注解的,每建一个类都去补注解,太麻烦,我们就在这个类中加上注解,其他测试类直接继承这个类就好了:

     

    package com.alibaba;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.context.web.WebAppConfiguration;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    //由于是Web项目,Junit需要模拟ServletContext,因此我们需要给我们的测试类加上@WebAppConfiguration。
    @WebAppConfiguration
    public class TmallApplicationTests {
    
        @Before
        public void init() {
            System.out.println("开始测试-----------------");
        }
    
        @After
        public void after() {
            System.out.println("测试结束-----------------");
        }
    }
    

     

    3.controller,service,dao等,省略,就是普通方法,普通接口


    4.测试类

     

    我这里建一个测试类,继承基类,然后测试我service中的两个方法

     

    package com.alibaba;
    
    import com.alibaba.service.EntFileService;
    import org.junit.Assert;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    /**
     * Created by lightClouds917
     * Date 2018/2/2
     * Description:测试类
     */
    public class EntFileTest extends TmallApplicationTests {
    
    
        @Autowired
        private EntFileService entFileService;
        //@Ignore("not ready yet")
        @Test
        public void testGetEntFileById(){
            Assert.assertSame("企业数量有误",500,entFileService.getCount());
        }
    
        @Test
        public void testGetEntFileList(){
            Assert.assertSame("企业数量不为10",10,entFileService.getEntFileList());
        }
    }
    

    如上,直接@Autowired引入你想测试的类就好,然后继承基类,测试方法上面要加@Test注解。

    然后,第一个测试方法:我想测试一下企业数量是不是600,参数意义:

    第一个参数:如果测试不通过,会抛出此消息,此参数可不要;

    第二个参数:我预期的值,我这里希望他查出来的结果是600;

    第三个参数:是实际的结果,就是我们调用方法返回的结果;

    我们可以看一下Assert类的源码:
     

        /**
         * Asserts that two objects refer to the same object. If they are not, an
         * {@link AssertionError} is thrown with the given message.
         *
         * @param message the identifying message for the {@link AssertionError} (<code>null</code>
         * okay)
         * @param expected the expected object
         * @param actual the object to compare to <code>expected</code>
         */
        static public void assertSame(String message, Object expected, Object actual) {
            if (expected == actual) {
                return;
            }
            failNotSame(message, expected, actual);
        }
    
        /**
         * Asserts that two objects refer to the same object. If they are not the
         * same, an {@link AssertionError} without a message is thrown.
         *
         * @param expected the expected object
         * @param actual the object to compare to <code>expected</code>
         */
        static public void assertSame(Object expected, Object actual) {
            assertSame(null, expected, actual);
        }

     

    5.运行测试用例

     

    运行有两种方法:

    1.选中方法,右键,然后run 。。。;

    2.点击方法前的小标;

    具体操作如下截图:

    现在看运行结果,如下图:

    区块一:这里是测试用例的执行结果,由于未获得预期结果,打印出了我们提前设置的错误信息。

    区块二:这是测试用例的覆盖率,类的覆盖,方法的覆盖,行数的覆盖,非常详细。

    区块三:此区块是预期结果和实际结果的详细对比,点击后才会显示,如图点击位置。

    关于Assert中,还有很多断言方法,方法名字很规范,看名字就知道怎么用了,这里不再过多说明。

     

    6.打包测试

     

    项目开发完后,我们写了100个测试用例类,我不能每个类都点击进去,然后慢慢执行,SpringBoot提供了打包测试的方式:我们用一个类,把所有的测试类整理进去,然后直接运行这个类,所有的测试类都会执行。

    我这里建了两个测试类,分别是EntFileTest,EntFileTest2,现在我打包进TestSuits,让他们一次运行:

     

    @Suite.SuiteClasses({EntFileTest.class,EntFileTest2.class})

    打包完整代码:

     

    package com.alibaba;
    
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    
    /**
     * Created by lightClouds917
     * Date 2018/2/2
     * Description:打包测试
     */
    //@Ignore("not ready yet")
    @RunWith(Suite.class)
    @Suite.SuiteClasses({EntFileTest.class,EntFileTest2.class})
    public class TestSuits {
    
        //不用写代码,只需要注解即可
    }
    

     

     

    7.忽略方法

     

    当我一个测试类写了10个测试方法时,其中有1个我暂时不想测,想跳过,但是其他9个我想一次运行,怎么办?这里有一个忽略注解,写在方法上,可以忽略这个测试方法,写在类上,可以忽略这个类。

     

    package com.alibaba;
    
    import com.alibaba.service.EntFileService;
    import org.junit.Assert;
    import org.junit.Ignore;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    /**
     * Created by lightClouds917
     * Date 2018/2/2
     * Description:测试类
     */
    public class EntFileTest extends TmallApplicationTests {
    
    
        @Autowired
        private EntFileService entFileService;
    
        @Ignore("not ready yet")
        @Test
        public void testGetEntFileById(){
            Assert.assertSame("企业数量有误",600,entFileService.getCount());
        }
    
        @Test
        public void testGetEntFileList(){
            Assert.assertSame("企业数量不为10",10,entFileService.getEntFileList());
        }
    }
    

    此时,运行这个测试类,testGetEntFileById()方法就会忽略执行。

    ----------------------------猝不及防,我要打广告了----------------------------

    欢迎关注公众号java4all,或添加IT云清个人号,一起聊技术聊成长。

       

                java4all 公众号                       IT云清 个人号 

    ----------------------------猝不及防,我要打广告了----------------------------

    展开全文
  • JUNIT

    2005-07-19 17:08:00
    今天使用了JUNIT测试了一下最简单的程序,写点记录吧。第一个是,要把JUNIT的相应的包放在classpath中,然后写一个类,我写的是一个做加法运算的类,最好写在一个包里面,不然好象ECLIPSE会有一个警告,然后点击这个...
  • 写SpringCloud项目使用junit测试rabbitmq发送消息时,运行junit测试方法报错: java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=sendMsg_directExch], {ExactMatcher:fDisplayName=...
  • No tests found with test runner 'JUnit 5'

    万次阅读 2020-05-08 14:14:26
    JUnit单元测试报错:No tests found with test runner 'JUnit 5’ 原因:运行的juint版本和包引入的juint版本不一致。 解决办法:右键测试方法->Run Configurations ,左面选择JUnit,在右边的Test runner的选项...
  • IDEA中使用JUnit4(单元测试框架)超详细!

    万次阅读 多人点赞 2019-08-20 17:25:23
    IDEA中使用JUnit4教程 超详细!(单元测试框架) 自动化测试的必经之路--Selenium
  • JUnit 4 vs JUnit 5

    千次阅读 2019-10-04 09:56:26
    JUnit5中没有声明任何属性,JUnit Jupiter中的测试扩展是基于它们自己的专用注解来完成的。这样的方法会被继承,除非它们被覆盖。 JUnit 4中基于属性来设置,timeout和exception两个属性 类前置方法 功能描述 ...
  • JUnit 5和JUnit 4比较

    万次阅读 多人点赞 2019-01-21 15:11:34
    JUnit 5旨在调整java 8样式的编码,并且比JUnit 4更强大和灵活。在这篇文章中,JUnit 5 vs JUnit 4,我们将关注junit 4和junit 5之间的一些主要差异。 1. JUnit 5 vs JUnit 4 - 注释 两个版本中的大多数注释都是...
  • Junit 4 与Junit 5区别

    2020-10-20 15:10:17
    所需JDK Junit 4 Junit 5 ...需要 Java 5 或以上版本 ...Junit 4 所有的东西在一...Junit 5 由JUnit Platform, JUnit Jupiter 和 JUnit Vintage 三个子项目组成: JUnit Platform 定义了 test engine API,用于开发在
  • JUnit3.8.1

    千次下载 热门讨论 2014-07-23 09:35:07
    JUnit3.8.1 jar包
  • JUnit免费课程

    千人学习 2015-05-22 00:53:49
    作为单元测试系列的第一门课程,本课程介绍JUnit的使用。通过免费课程的学习,可以掌握Junit的常用的功能。如果想进一步学习,可以学习《Junit收费课程》
  • Junit4

    千次阅读 2019-04-04 18:47:27
    junit4官方网站:https://junit.org/junit4/ junit5官方网站:https://junit.org/junit5/ W3Cschool:https://www.w3cschool.cn/junit/ 慕课:https://www.imooc.com/learn/356 依赖包:hamcrest-core.jar(设置...
  • 本系列的学习也正是为了将原来的项目,从 junit4 升级到 junit5 junitperf Java 性能测试框架工具-JunitPerf junit5 的新特性 注解定义 ps: 为了简化说明,删除了其他的属性。 imp...
  • JUnit 5最突出的目标之一是使JUnit与其编程客户端(构建工具和ide)之间的接口更加强大和稳定。 目的是将发现和执行测试的内部内容与所有必需的外部过滤和配置分离开来。 JUnit 5引入了启动器的概念,可以...
  • springboot使用junit5/junit4

    千次阅读 2020-01-31 17:06:31
    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage 其中 JUnit平台,其主要作用是在JVM上启动测试框架。它定义了一个抽象的TestEngineAPI来定义运行在平台上的测试框架,同时还支持通过命令行、Gradle和...
  • Junit5系列-什么是Junit5?

    千次阅读 2019-01-21 17:57:46
    目录Junit5简介JDK 支持Maven 导入所有组件介绍JUnit PlatformJUnit JupiterJUnit VintageJunit5 BOM Junit5 官网:JUnit5 is the next generation of JUnit. 注意:以下内容绝大部分翻译自官网 目标是为JVM上的...
  • Junit 测试框架简介   测试框架是最流行的Java单元测试框架。Junit被用来开发对Java类的单元测试。它就是一个类包,提供了各种方法来测试Java类中的方法(method)。  Junit 4 特性 简单的注解,提供书写Junit测试...
  • junit 单元测试事务自动回滚

    万次阅读 2017-06-15 10:25:07
    junit 单元测试事务会自动回滚。通过@Rollback(true)注解来实现,默认是true,事务会回滚,可以不写。false时事务不会回滚,数据会写到数据库中。 实例: package com.xiaolyuh.service; import java.util....
  • JUnit简介

    千次阅读 2019-03-14 15:56:35
    什么是JUnitJUnit是用于编写和运行可重复的自动化测试开源测试项目框架,这样可以保证我们的代码按与其工作。JUnit可广泛用于工业和作为支架(从命令行)或IDE(如IDE)内单独的java程序。 Junit提供: 断言...
  • junit3对比junit4

    2016-02-09 18:34:03
    本文内容摘自junit实战,感谢作者的无私奉献。 个人觉得每个开源包的版本对比意义不大,闲来无事,这里就来整理一下好了。本文名为junit3对比junit4,但是我通过这篇博客主要也是想统一的来整理下junit4的一些功能...
  • JUnit 5 快速上手(从 JUnit 4 到 JUnit 5)

    千次阅读 2017-09-18 15:59:21
    一直在关注 JUnit 5 的演进,自两年前首个 ALPHA 版后,经历了 6 的 Milestone, 3 个 RC 终于在 2017/09/10 正式发布了。其实还从未对其深究过,今天算是正式开始体验。 不像以往的版本,JUnit 5 现在是三个模块的...
  • 这篇特意用单独一篇文章来介绍如何运行Junit, 同时也适应于TestNG, 真的,很多人还不会如何运行JUnit,特别是一个class文件下有多个@Test的用例。 1.单元JUnit用例运行 当一个class中只有一个@Test的JUnit方法,...
  • 单元测试之JUnit5入门

    万次阅读 2018-02-07 13:31:54
    关于JUnit5 与以前版本的JUnit不同,JUnit 5由三个不同子项目中的几个不同模块组成。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform是基于JVM的运行测试的基础框架在,它定义了...

空空如也

1 2 3 4 5 ... 20
收藏数 64,015
精华内容 25,606
关键字:

junit