junit单元测试的基本用法
关于intellijIDEA上junit的用法

关于intellijIDEA上junit的⽤法话说,最近正在看视频学java。
⾥⾯有个叫做junit的东西很有⽤。
但是实话说我摆弄了半天都没弄明⽩。
今天呢通过⼀些资料,终于弄清楚了junit的⼤致⽤法,这⾥写出来,⽤以分享和备忘。
⾸先,环境和软件版本:Intellj IDEA 14.2第⼀步,引⼊junit写⼀个测试类package com.junit;public class JunitTest1 {}junit的⽤法是,将需要进⾏测试的⽅法上⾯写上“@Test”,那我们就这样写1package com.junit;23import org.junit.Test;45public class JunitTest1 {6 @Test78 }(这个地⽅要注意,如果没有直接引⽤上⾯的org.junit.Test包的话,需要点选@Test,然后输⼊Alt+Enter来在下拉列表中进⾏加⼊)这个时候呢,@Test下⾯会报错,提⽰‘@Test not applicable to type’,⼤概意思是@Test不能被这个类型应⽤。
针对这个问题,写个测试⽅法就好了。
package com.junit;import org.junit.Test;public class JunitTest1 {@Testpublic void Test(){}}这时虽说不会报错了,但是⼀个空的测试⽅法是没有意义的,所以我们补全⽅法。
注意:这个assertEquals⽅法(作⽤是判断两个int类型数值是否相等,如果相等,会报绿灯;否则为红灯),需要加载静态包。
1package com.junit;23import org.junit.Test;45import static org.junit.Assert.assertEquals;67public class JunitTest1 {8 @Test9public void Test(){10 assertEquals(2,1+5);11 }12 }选取⽅法名,ctrl+shift+F10进⾏测试。
Junit4单元测试

Junit4单元测试Junit4单元测试第⼀部分⽤法1.1 常见功能典型配置:/*⽤于配置spring Boot中测试的环境*/@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(classes = MyBlogApplication.class)/* 开启事务,测试完成默认⾃动回滚,不会弄脏数据库 */@Transactionalpublic class WhoHaveWhatTagsMapperTest {@BeforeClasspublic static void beforeClass() {}@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}@Testpublic void insertWhoHaveWhatTags() throws Exception {}@Testpublic void selectBlogByTag() throws Exception {}@Testpublic void deleteWhoHaveWhatTags() throws Exception {}}@Test:把⼀个⽅法标记为测试⽅法两个属性:excepted;表⽰测试在执⾏中期望抛出的异常类型,如果不抛出,反⽽报错。
timeout:超时抛出异常。
单位毫秒@Test(timeout = 2000)@Test(expected = Exception.class)public void testFactorialException() throws Exception {new Math().factorial(-1);fail("factorial参数为负数没有抛出异常");}@Before:每⼀个测试⽅法执⾏前⾃动调⽤⼀次@After:每⼀个测试⽅法执⾏完⾃动调⽤⼀次@BeforeClass:所有测试⽅法执⾏前执⾏⼀次,在测试类还没有实例化就已经被加载,所以⽤static修饰@AfterClass:所有测试⽅法执⾏完执⾏⼀次,在测试类还没有实例化就已经被加载,所以⽤static修饰@Ignore:暂不执⾏该测试⽅法setup⽅法主要实现测试前的初始化⼯作teardown⽅法主要实现测试完成后垃圾回收⼯作!setup⽅法主要实现测试前的初始化⼯作,teardown⽅法主要实现测试完成后垃圾回收⼯作!测试⽅法的声明要求:名字可以随便取,没有任何限制,但是返回值必须为void,⽽且不能有任何参数。
junit的基本功能

junit的基本功能
JUnit是一个Java编程语言的单元测试框架,其基本功能可以归纳如下:
1.测试框架:JUnit提供了一个框架,用于编写和执行单元测试。
2.测试运行器:JUnit提供了测试运行器,用于运行测试用例并提供执行结果。
3.测试套件:JUnit允许开发人员将多个测试用例组合成测试套件,方便统一管理和运行。
4.断言库:JUnit提供了一组断言库,用于判断测试结果是否符合预期,包括比较值、判断异常等。
5.测试注解:JUnit提供了一组注解,用于标识测试用例、测试套件和测试方法等。
6.测试报告生成:JUnit提供了测试报告生成工具,可以生成各种格式的测试报告,方便测试结果分析和展示。
总之,JUnit是一个强大的工具,可以帮助开发人员编写高质量的单元测试,提高代码质量和可维护性。
JUnit 3 单元测试

Junit3单元测试笔记1.JUnit是每一个程序员必须掌握的技能之一。
2.使用JUnit的最佳实践:1)新建一个test的source folder,用于存放测试类源代码。
2)目标类与测试类应该处于同一个目录下,这样测试类中就不必导入源代码所在的包,因为他们处于同一目录下。
3)测试类命名规则:假如目标类是Calculator,那么测试类是CalculatorTest。
3.JUnit口号:keep the bar green to keep the code clean.保持横条是绿色的保持代码是整洁的4.我的名言:No reflection, No most frameworks.没有反射,没有太多的数据结构。
5.JUnit:单元测试不是为了证明您是对的,而是为了证明您的代码没有错误。
6.测试用例(Test Case)是单元测试的一个很重要的方面。
7.单元测试主要是用来判断程序运行的结果与自己期望的结果是否一致。
8.在JUnit3.8中,测试方法必须满足如下规则:1)方法必须是public。
2)方法必须是void。
没有返回值。
3)方法没有参数。
4)方法名必须是以Test开头。
9.测试用例之间要保持完全的独立性,不允许任何的依赖关系。
10.我们不能依赖与测试方法的执行顺序。
11.DRY(Don’t Repeat Yourself)。
不要重复你的代码。
在控制台中如下:每一个方法中都有:范例1:求int类型的数组中最大值。
除了使用JUnit方式进行测试之外,还可以在main方法中测试。
测试CalculatorTest,点击13.测试之前是什么状态,测试执行之后就应该是什么状态。
而不应该由于测试的原因导致状态发生了变化。
范例2:删除某一个目录的所有文件1)修改方法访问修饰符,将private修改为default或者是public。
(不推荐使用)。
2)使用反射在测试类中调用目标类的私有方法。
(推荐使用)。
(2).mybatis单元测试(junit测试)

(2).mybatis单元测试(junit测试)⼀、Junit使⽤步骤:1、创建测试⽬录,(src、测试⽬录是test)2、在测试⽬录test中创建与src中相同的包名3、为需要测试的类创建测试类,例如:UsersMapper,测试类是UsersMapperTest4、为被测试类(UsersMapper)中的需要测试的⽅法在测试类型创建相应的⽅法。
⽐如,需要测试findById⽅法,那么则测试类中创建findById⽅法,测试⽅法的要求a、不能有返回值、不能有参数b、需要只⽤@Test注解对该⽅法进⾏注解。
5、在测试⽅法中,使⽤断⾔对结果进⾏判断,assert,判断⼀。
单元测试1. 在项⽬下创建⼀个⽬录test,之后将test右键Mark Directory as(标记⽬录为)->测试源根2. 在test下创建类,类的包名与被测试类的包名⼀致,在被测试类后⾯加上Test,例如:ersMapper与ersMapperTest。
在测试⽅法前@Test,导⼊junit测试路径,点击确定即可,之后maven后台下载。
3. Mybatis的核⼼对象:SqlSessionFactoryBuilder , SqlSessionFactory , SqlSession。
(SqlSessionFactoryBuilder创建⼯⼚,⼀般只⽤⼀次。
SqlSessionFactory是⼯⼚,⼯⼚长期存在。
SqlSession例如是⼯⼚造的汽车,有时间期限,即使⽤完⼯⼚依旧存在。
) SqlSeessionFactoryBuilder⽤过即丢,可⽤来创建多个SqlSessionFactory实例,并提供多个build⽅法的重载来构建SqlSessionFactory. SqlSession(⼀般瞬时、短链接,也可以长连接,⽤完关闭)build(InputStream inputStream,String environment,Properties properties)build(Reader reader,String environment,Properties properties)build(Configuration config)配置信息以三种形式提供给 SqlessionFactoryld 的build ⽅法:InputStream(字节流) Reader (字符流) Configuration (类)读取XML⽂件构造⽅式:String CONFIG_FILE = "mybatis-config.xml";InputStream resourceAsStream = Resources.getResourceAsStream(CONFIG_FILE);SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder().build(resourceAsStream);//⾮静态成员,实例成员,成员变量,通过构造⽅法初始化。
junit+maven单元测试

junit+maven单元测试⼀、概念junit是⼀个专门测试的框架集合maven进⾏单元测试,可批量测试类中的⼤量⽅法是否符合预期⼆、作⽤:单元测试:测试的内容是类中的⽅法,每⼀个⽅法都是独⽴测试的。
⽅法是测试的基本单位。
三、使⽤⽅法1、pom内加⼊依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency>2、在maven中src/test/java⽬录下的,创建测试程序。
推荐的创建类和⽅法的提⽰:1、测试类的名称:Test+待测试类名2、测试⽅法的名称:Test+⽅法名称例如:你要测试HelloMaven创建测试类TestHelloMaven@Testpublic void testaDD(){测试HelloMaven的add⽅法是否正确}其中testAdd叫做测试⽅法,定义规则:1、⽅法必须是public的2、⽅法必须没有返回值3、⽅法名称⾃定义,推荐是Test+被测⽅法4、⽅法上⾯加上注解@Test四、举例,Hello项⽬1、新建java源程序,存放在Hello\src\main\java\com\testbk⽬录下,取名HelloMaven.java package com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("maven junit testAdd()===")HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res)}}2、新建maven测试类型,存放在Hello\src\main\java\com\testbk⽬录下,取名TestHelloMaven.java package com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("maven junit testAdd()===")HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res)}@Testpublic void testAdd2(){System.out.println("#####maven junit testAdd()2###");HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(50,res);}}3、执⾏mvn clean:清理target⽬录[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ testjava ---[INFO] Deleting D:\javaProjects\Hello\target[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.196 s[INFO] Finished at: 2021-04-25T22:50:10+08:00[INFO] ------------------------------------------------------------------------4、执⾏mvn compile:编译main/java⽬录下的java为class⽂件,同时把class拷贝到target/classes⽬录下⾯[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testjava ---[INFO] Changes detected - recompiling the module![INFO] Compiling 1 source file to D:\javaProjects\Hello\target\classes[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.724 s[INFO] Finished at: 2021-04-25T22:54:23+08:00[INFO] ------------------------------------------------------------------------5、执⾏mvn test-compile:编译test/java⽬录下的java为class⽂件,同时class拷贝到target/test-classes⽬录下⾯[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testjava ---[INFO] Nothing to compile - all classes are up to date[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ testjava ---[INFO] Changes detected - recompiling the module![INFO] Compiling 1 source file to D:\javaProjects\Hello\target\test-classes[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.764 s[INFO] Finished at: 2021-04-25T22:55:43+08:00[INFO] ------------------------------------------------------------------------6、执⾏mvn test:查看测试结果,通过1,失败1,并在指定⽬录⽣成测试报告Results :Failed tests: testAdd2(com.testbk.TestHelloMaven): expected:<50> but was:<30>Tests run: 2, Failures: 1, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.050 s[INFO] Finished at: 2021-04-25T22:57:16+08:00[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project testjava: There are test failures. [ERROR][ERROR] Please refer to D:\javaProjects\Hello\target\surefire-reports for the individual test results.[ERROR] -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] /confluence/display/MAVEN/MojoFailureException7、修改测试代码,并再次执⾏mvn testpackage com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("=====maven junit testAdd()===");HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res);}@Testpublic void testAdd2(){System.out.println("#####maven junit testAdd()2###");HelloMaven hello = new HelloMaven();int res = hello.add(30,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(50,res);}}查看运⾏结果,测试通过T E S T S-------------------------------------------------------Running com.testbk.TestHelloMaven=====maven junit testAdd()===#####maven junit testAdd()2###Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 secResults :Tests run: 2, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.282 s[INFO] Finished at: 2021-04-25T22:58:41+08:00 [INFO] ------------------------------------------------------------------------。
Demo002IDEA中Junit单元测试的使用(初级篇)

Demo002IDEA 中Junit 单元测试的使⽤(初级篇)推荐JUnit 视频教程:。
1.基本理论1.1 单元测试单元测试⼜称模块测试,属于⽩盒测试,是最⼩单位的测试。
模块分为程序模块和功能模块。
功能模块指实现了⼀个完整功能的模块(单元),⼀个完整的程序单元具备输⼊、加⼯和输出三个环节。
⽽且每个程序单元都应该有正规的规格说明,使之对其输⼊、加⼯和输出的关系做出名明确的描述。
JUnit 是⼀个回归测试框架(regression testing framework )。
Junit 测试是程序员测试,即所谓⽩盒测试,因为程序员知道被测试的如何(How )完成功能和完成什么样(What )的功能。
Junit 是⼀套框架,继承TestCase 类,就可以⽤Junit 进⾏⾃动测试了。
1.2 什么是Junit①JUnit 是⽤于编写可复⽤测试集的简单框架,是xUnit 的⼀个⼦集。
xUnit 是⼀套基于测试驱动开发的测试框架,有PythonUnit 、CppUnit 、JUnit 等。
②Junit 测试是程序员测试,即所谓⽩盒测试,因为程序员知道被测试的软件如何(How )完成功能和完成什么样(What )的功能。
③多数Java 的开发环境都已经集成了JUnit 作为单元测试的⼯具,⽐如IDEA ,Eclipse 等等。
④JUnit 官⽹:1.3 为什么要使⽤单元测试①测试框架可以帮助我们对编写的程序进⾏有⽬的地测试,帮助我们最⼤限度地避免代码中的bug ,以保证系统的正确性和稳定性。
②很多⼈对⾃⼰写的代码,测试时就简单写main ,然后sysout 输出控制台观察结果。
这样⾮常枯燥繁琐,不规范。
缺点:测试⽅法不能⼀起运⾏,测试结果要程序猿⾃⼰观察才可以判断程序逻辑是否正确。
③JUnit 的断⾔机制,可以直接将我们的预期结果和程序运⾏的结果进⾏⼀个⽐对,确保对结果的可预知性。
1.4 测试覆盖评测测试过程中已经执⾏的代码的多少。
junit使用简明手册

junit使用简明手册来自网辉在使用XP进行开发的过程,unit test是必不可少的环节。
作为unit test,junit是首选的工具。
本文从使用目的、如何使用、以及使用中需要考虑的问题,简略描述了junit的基本用法。
使用目的junit是java中书写unit test的framework,目前一些流行的unit test工具大都都是在junit上扩展而来的。
目前它的版本是junit3.8.1,可以从上下载。
用法1. 基本使用步骤,Junit的使用非常简单,它的基本使用步骤:- 创建,从junit.framework.TestCase派生unit test需要的test case- 书写测试方法,提供类似于如下函数签名的测试方法:public void testXXXXX();- 编译,书写完test case后,编译所写的test case类- 运行,启动junit test runner,来运行这个test case。
Junit提供了2个基本的test runner:字符界面和图形界面。
启动命令分别如下:a 图形界面:java junit.swingui.TestRunner XXXXXb 字符界面:java junit.textui.TestRunner XXXXX2. 使用例子:import junit.frmework.TestCase;public class TestSample extends TestCaset{public void testMethod1(){assertTrue( true);}3. setUp与tearDown,这两个函数是junit framework中提供初始化和反初始化每个测试方法的。
setUp 在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown在每个测试方法被调用之后被调用,负责撤销测试环境。
它们与测试方法的关系可以描述如下:测试开始-> setUp -> testXXXX -> tearDown ->测试结束4. 使用例子:import junit.frmework.TestCase;public class TestSample extends TestCaset{protected void setUp(){//初始化……}public void testMethod1(){assertTrue( true);}potected void tearDown(){//撤销初始化……}}5. 区分fail、exception。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
junit单元测试的基本用法
JUnit是Java编程语言的一个单元测试框架,它提供了一种标准化的方式来编写和运行测试代码。
JUnit单元测试的基本用法包括以下几个步骤:
1. 添加依赖
首先,需要在项目中添加JUnit的依赖。
如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:
'''xml
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
'''
如果你使用的是Gradle,可以在build.gradle文件中添加以下依赖:
'''groovy
dependencies {
testImplementation 'junit:junit:4.13.2'
}
'''
2. 编写测试类
创建一个Java类,并使用'@Test'注解来标记测试方法。
例如:'''java
import org.junit.Test;
import static org.junit.Assert.*;
public class MyTest {
@Test
public void testAddition() {
int result = 2 + 2;
assertEquals(4, result);
}
}
'''
在上面的例子中,我们编写了一个测试方法'testAddition()',它使用'assertEquals()'方法来验证2 + 2的结果是否为4。
3. 运行测试
在IDE中,通常可以直接运行测试类。
例如,在Eclipse中,可以右键点击测试类,然后选择“Run as JUnit Test”。
在命令行中,可以使用'mvn test'或'gradle test'来运行所有测试。
JUnit还提供了其他一些有用的注解和断言方法,例如:
* '@Before'和'@After':用于在每个测试方法之前和之后执行一些初始化或清理操作。
* '@BeforeClass'和'@AfterClass':用于在测试类之前和之后执行一些初始化或清理操作。
这些方法必须是静态的,并且不能访问测试类的实例变量。
* '@Ignore':用于暂时忽略某个测试方法。