junit test(testng和junit有什么优缺点,该如何选择)

2024-07-03 17:43:56 65

junit test(testng和junit有什么优缺点,该如何选择)

本文目录

testng和junit有什么优缺点,该如何选择


结论是两者差不多,一般人用用testng就好。
原因:1.testng底层调用junit
2.历史上曾有testng优于junit的一段时期,但随后junit已更新并追赶上来
3.testng的data provider使用较方便
4.testng能做的事情junit都能做,但是有的地方会比较麻烦,例如,数据驱动,多线程并发执行测试用例。testng更便捷,自带。junit则要依靠第三方工具提供。
5.junit能做的事情testng也都能做,但junit也有更便捷的时候。比如soft assertion,junit可以直接继承jassert做,testng你要自己去实现静态类来做。
6.junit是testng的底层,灵活度上更高。testng调用junit,对测试员来说用户体验更好。

JUnit test 如何做Java静态方法测试


使用junit测试Java静态私有方法,通过以下案例进行分析:

测试目标类如下:

package cn.outofmemory.junit;
public class TestTarget {
    /**
     * 移除正则表达式中需要转义的字符
     * @param w word
     * @return 移除正则表达式中需要转义的字符
     * @author Administrator
     * @date 2015-7-11
     */
    private static String convert4Regex(String w) {
        if (w == null) {
            return null;
        }
        String convertedChars = {“\\“,“.“,“+“,“*“,“(“,“)“,“{“,“}“,“[“,“]“,“?“,“/“,“^“,“$“,“|“};
        for (String c : convertedChars) {
            w = w.replace(c, “\\“ + c);
        }
        return w;
    }
}

测试方法:

@Test
public void testConvert4Regex() throws Exception {
        String input = “A+“;
        String expected = “A\\+“;
        Method targetMethod = TestTarget.class.getDeclaredMethod(“convert4Regex“, String.class);
        targetMethod.setAccessible(true);
        Object actual = targetMethod.invoke(TestTarget.class, new Object{input});
        assertEquals(expected,actual);
    }

junit如何测试访问数据库的类


关于junit单元测试工具的安装请参看第二课的内容(其实就是导入一个junit的jar包就行了)
首先认识几个注解标签
@Test:测试方法
@Before:初始化方法
@After:释放资源
执行顺序:@Before-》@Test-》@After
第一步新建测试文件夹(目的就是用来存放测试类,使项目更整洁,分类明确,好管理)
选中项目右键new-》Source Folder 输入文件夹的名称例如test
在测试文件夹下创建测试类(就是创建个普通的类)
如下在测试类中使用junit进行单元测试
下面只是先搭建一个测试框架
搭建好之后测试hibernate访问数据库的代码注意:导入的包不要弄错,都是hibernate的包
public class StudentTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init(){ //创建配置对象 Configuration config = new Configuration(); //创建服务注册对象 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //创建会话工厂对象 sessionFactory = config.buildSessionFactory(serviceRegistry); //会话对象 session = sessionFactory.openSession(); //开启事务 transaction = session.beginTransaction(); } @Test public void testSaveStudents(){ Student s = new Student(1, “小明“, new Date(), “北京xxxx街道5号楼201“); session.save(s);//保存对象到数据库 } @After public void destory(){ transaction.commit();//提交事务 session.close();//关闭会话 sessionFactory.close();//关闭会话工厂 }}
进行测试如下: 选中测试方法右键run as -》junit test就行了
执行成功控制台打印信息:
查看数据库表
可以看到增加了一条信息,测试成功

Java Junit Test 要怎么写


一般不用写,直接测试方法,在测试的方法上加上注解@Test

import org.junit.Test;
public class TestJunit {
    @Test
    public void TestSaveMethod(){
    Food food=new Food(“红烧肉“, new BigDecimal(45.5).setScale(2, BigDecimal.ROUND_HALF_UP), “hsr.jpg“);
        SaveFood(food);
    }
    
    
    public void SaveFood(Food food){
       if(food!=null){
        food.setId(UUID.randomUUID().toString());
        System.out.println(“Food Save is OK!“);
        System.out.println(“当前ID:“+food.getId()+“   名称:“+food.getName()+“   单价:“+food.getPrice());
      }else{
       System.out.println(“Food Save is False!“);
      }
    
    }
}
class Food implements Serializable{
    private String id;
    private String name;
    private BigDecimal price;
    private String icon;    
    
    public Food(String name,BigDecimal price,String icon) {
        this.name=name;
        this.price=price;
        this.icon=icon;        
    }
    public void setId(String id) {
        this.id = id;
    }
    
    public String getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public BigDecimal getPrice() {
        return price;
    }
    public String getIcon() {
        return icon;
    }
}
//这样的话RUN 的时候就会出现JUnit测试

为什么使用Junit Test而不用普通java main方法来完成测试


因为在程序里边,一个接口对应一个实现方法,而在接口中常常会定义相关的很多方法,所以在测试的时候,如果都在main方法里边进行测试,main方法就会显得臃肿,而且不便于以后其他人测试以及查看测试数据,用Junit Test测试的话,一个方法对应一个测试方法,简单明了,也方便别人查看测试方法以及测试数据。

Junit4中怎样随心所欲的执行Test


使用的是junit4.4,想要有选择性的执行TestCase中的Test,是需要自己扩展junit4.4的API的。junit4.8的版本中,加入了一个Runner:Categories,可以实现只跑特定分类的Test。现在通过代码举例来比较两个版本中批量执行Test的差别.
public class TestOne {

@Test
public void testOne1(){
System.out.println(“TestOne 1“);
}

@Category({RunCases.class}) ----Junit4.8中才有的注解
@Test
public void testOne2(){
System.out.println(“TestOne 2“);
}
}
public class TestTwo {

@Test
public void testTwo1(){
System.out.println(“TestTwo 1“);
}

@Category(RunCases.class) ----Junit4.8中才有的注解
@Test
public void testTwo2(){
System.out.println(“TestTwo 2“);
}
}
junit4.4中,使用Suite批量执行Test: TestOne.class,TestTwo.class中的Test会全部被执行,实现如下:
@RunWith(Suite.class)
@SuiteClasses({
TestOne.class,
TestTwo.class})
public class AllTestCases {
}
junit4.8中,使用Categories批量执行Test:可以有选择的执行SuiteClasses中的部分Test,实现如下:
在TestCase的Test前加上@Category(RunCases.class) 注解,RunCases.class是自定义分类类型(可以是class,也可以是interface,名称没有特殊要求);
public class RunCases {
}

public interface RunCases{
}
然后,我们使用@Runwith来指定使用Categories测试引擎,并且使用@IncludeCategory或@ExcludeCategory指定哪些测试用例被执行:
@RunWith(Categories.class)
@IncludeCategory(RunCases.class)
@SuiteClasses({TestOne.class,TestTwo.class})
public class TestPartExcute {
}
执行结果:
TestOne 2
TestTwo 2
@RunWith(Categories.class)
@ExcludeCategory(RunCases.class)
@SuiteClasses({TestOne.class,TestTwo.class})
public class TestPartExcute {
}
执行结果:
TestOne 1
TestTwo 1
注意事项说明:
1.@Category({RunCases.class}) 注解用在测试用例类上,并不能生效;
2.可以定义多个分类类型,在@Category注解中,可以使用多个分类类型,eg:@Category({A.class,B.class});
3.@IncludeCategory或@ExcludeCategory注解中出现的类型,必须在@Category注解中出现过,否则执行会报错。
附带:Junit4各版本新特性汇总
Junit源码(github)地址:git://github.com/KentBeck/junit.git

JUnit 4.4
主要提供了以下三个大方面的新特性来更好的抓住编程人员的代码意图:
1.提供了新的断言语法(Assertion syntax)——assertThat
2.提供了假设机制(Assumption)
3.提供了理论机制(Theory)
JUnit 4.5
Runner实现发生了较大改变,废弃了原来的JUnit4ClassRunner,改用BlockJUnit4ClassRunner替代。新的runner机制更容易扩展和重用,可在测试执行流程中方便的切入加入新的特性。
JUnit 4.6
该版本提升了核心的体系结构,允许对测试进行重新排序以及并行处理等。
Junit 4.7
该版本增加了一个重要的新特性:Rule,同时添加了很多核心Rule:
TemporaryFolder:测试可以创建文件与目录并且会在测试运行结束后将其删除。这对于那些与文件系统打交道且独立运行的测试来说很有用。
ExternalResource:这是一种资源使用模式,它会提前建立好资源并且会在测试结束后将其销毁。这对于那些使用socket、嵌入式服务器等资源的测试来说很有用。
ErrorCollector:可以让测试在失败后继续运行并在测试结束时报告所有错误。这对于那些需要验证大量独立条件的测试来说很有用(尽管这本身可能是个“test smell”)。
ExpectedException:可以在测试中指定期望的异常类型与消息。
Timeout:为类中的所有测试应用相同的超时时间。
Junit 4.8
加入了一个Runner:Categories,可以只跑特定分类的测试用例。
Junit 4.9
Test-class and suite level Rules。
Maven support
Junit 4.10
The RuleChain rule allows ordering of TestRules。

junit4.11 怎么使用@test


Junit4支持注解了,只要在要执行的方法前加@Test即可,如:
@Test
public void multiplyPoundsByInteger() {
assertEquals( 10, 5 );
}
Junit4增加了许多特性,主要是支持注解了:
测试由原来的命名模式改变注解,即testXXX变为@Test。其中@Test还提供了额外的属性。如expected,表示期望抛出的异常
数组比较改用Assert.assertArrayEquals
套件测试也用注解替换
通过@Ignore,可以忽略某个方法或整个类的测试
增加了新特性-理论机制(Theory),这个特性听起来很迷惑人,作用是使得开发人员从开始的定义测试用例的阶段就可以通过参数集(理论上是无限个参数)对代码行为进行概括性的总结.开发人员都知道他们代码所想要实现的概括性的总的目的,理论使得他们只需要在一个地方就可以快速的指定这些目的,而不要将这些目的翻译成大量的独立的测试用例。
提供了新的特性-假设机制(Assumption).此特性使用了Hamcrest库的类.本来Hamcrest是一个单独的测试组件,Junit也集成了一部分,但是并没有完全包含。建议使用junit独立的JAR文件,再单独引入hamcrest包。 其实hamcrest的功能相当的强大,理解起来也非常的容易,是一个很不错的组件。它提供assertThat,assumeThat,assumeNotNull等假设语句,也提供is,not,both..and,either..or等用法,非常的灵活。
@Before,@After,@BeforeClass,@AfterClass.这几个注解一看便知大概,@Before表示每个测试方法执行前执行一次,而@BeforeClass表示整个类测试前执行一次。不过需要注意的是,@BeforeClass,@AtferClass注解的方法必须是静态的。
Junit提供了新的核心运行类MaxCore,相对于以前的JunitCore运行机制,这个类有一系列的优点,如从未测试过的方法优先测试,剩下的测试中,以前测试失败的方法优先测试,再其次,运行快的优先于运行慢的方法。
参数化测试 允许通过变化范围的参数值来测试方法。
超时测试(Timeout test)可以被用来测试方法的执行时间。
Rule。它是JUnit4.7才开始提供的一种扩展方式,它能够替代大部分已有的Runner扩展。JUnit包含两种Rule Annotation:@ClassRule与@Rule。@ClassRule应用于测试类中的静态变量,而@Rule应用于成员变量;相同地是,这些变量必须是TestRule接口的实例,且访问修饰符必须为public。

junit test(testng和junit有什么优缺点,该如何选择)

本文编辑:admin

更多文章:


百度快照优化还有哪些方法啊?怎么优化网站的快照

百度快照优化还有哪些方法啊?怎么优化网站的快照

本文目录百度快照优化还有哪些方法啊怎么优化网站的快照百度快照优化是什么百度快照优化是怎么做的如何优化百度快照什么是百度快照优化,百度快照优化技巧网络推广优化公司如何做百度快照百度快照优化还有哪些方法啊百度快照也就是百度收录并显示出来的搜索结

2024年5月7日 00:34

商业大亨攻略(商业大亨攻略)

商业大亨攻略(商业大亨攻略)

本文目录商业大亨攻略梦幻西游手游商业大亨怎么杀 商业大亨阵容攻略梦幻西游手游商业大亨怎么过急求商业大亨营救贝尔任务攻略商业大亨公司升级攻略商业大亨攻略1、自由城股市是由城内各位大亨组成的一个独立的股市交易系统,交易所内的股票全部由玩家公司上

2023年8月9日 13:20

五笔打字练习软件免费下载(五笔打字练习软件)

五笔打字练习软件免费下载(五笔打字练习软件)

“五笔打字练习软件免费下载”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看五笔打字练习软件免费下载(五笔打字练习软件)!本文目录五笔打字练习软件打字员下载什么软件五笔打字键盘练习怎么下载谁有五笔打字员软件求发送!!!什么软件

2024年7月29日 10:01

game master(GM是game manager的缩写还是game master的缩写)

game master(GM是game manager的缩写还是game master的缩写)

本文目录GM是game manager的缩写还是game master的缩写GAME MASTERgm和pm是什么意思 游戏方面的ldsgamemaster怎么删除我用PS2主机接笔记本玩的.请问可以用修改器修改金钱吗我试过用Game Ma

2024年6月5日 02:46

起点中文网官网入口(起点中文网电脑官方网站)

起点中文网官网入口(起点中文网电脑官方网站)

大家好,今天小编来为大家解答以下的问题,关于起点中文网官网入口,起点中文网电脑官方网站这个很多人还不知道,现在让我们一起来看看吧!本文目录起点中文网电脑官方网站起点中文网的首页网址是多少求起点中文小说网址起点中文网作者登录专区入口起点网是什

2024年7月16日 22:10

最近听好多人说了纷享生活,这个app到底怎么样?纷享生活有哪些创新模式

最近听好多人说了纷享生活,这个app到底怎么样?纷享生活有哪些创新模式

本文目录最近听好多人说了纷享生活,这个app到底怎么样纷享生活有哪些创新模式最近好多人说的那个纷享生活是什么啊纷享生活上购买产品真的很便宜吗最近听好多人说了纷享生活,这个app到底怎么样这个APP我用了也有一段时间了,总体感觉还是非常不错的

2023年11月17日 05:00

专门找图片的app(看图片用什么软件好呢)

专门找图片的app(看图片用什么软件好呢)

各位老铁们,大家好,今天由我来为大家分享专门找图片的app,以及看图片用什么软件好呢的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录看图片用什么软件

2024年5月19日 07:22

腾讯qqapp官方免费下载(腾讯QQ下载安装)

腾讯qqapp官方免费下载(腾讯QQ下载安装)

今天给各位分享腾讯QQ下载安装的知识,其中也会对腾讯QQ下载安装进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录腾讯QQ下载安装腾讯QQ最新版在哪里下载腾讯qq下载安装怎么下载手机qqQQ软件怎么下载、安装腾讯

2024年7月18日 07:50

植物大战无尽版破解版(植物大战僵尸无尽离线破解版)

植物大战无尽版破解版(植物大战僵尸无尽离线破解版)

“植物大战无尽版破解版”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看植物大战无尽版破解版(植物大战僵尸无尽离线破解版)!本文目录植物大战僵尸无尽离线破解版植物大战僵尸无尽破解版怎么下载植物大战僵尸无尽破解版(充值不闪退)去

2024年7月14日 03:49

手机营业厅最新版下载(怎么下载手机联通营业厅)

手机营业厅最新版下载(怎么下载手机联通营业厅)

大家好,今天小编来为大家解答以下的问题,关于手机营业厅最新版下载,怎么下载手机联通营业厅这个很多人还不知道,现在让我们一起来看看吧!本文目录怎么下载手机联通营业厅怎样下载中国联通手机营业厅怎么下载联通营业厅怎样下载中国联通手机营业厅中国手机

2024年4月23日 23:05

学写自己的名字签名(怎样签名自己的姓名)

学写自己的名字签名(怎样签名自己的姓名)

各位老铁们好,相信很多人对学写自己的名字签名都不是特别的了解,因此呢,今天就来为大家分享下关于学写自己的名字签名以及怎样签名自己的姓名的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录怎样签名自己的姓名怎样写自己的

2024年6月25日 20:48

下载言情小说(怎么下载言情小说)

下载言情小说(怎么下载言情小说)

本文目录怎么下载言情小说哪里有言情小说下载推荐几个可以下载言情小说的网站想看言情小说,用哪款app比较好在哪里可以免费下载言情小说可以免费下载言情小说的网址怎么下载言情小说www.27txt.com在这里下载是不用花钱的而且完结没完结写的很

2024年5月6日 05:03

方块游戏平台(方块游戏平台怎么都是黑屏)

方块游戏平台(方块游戏平台怎么都是黑屏)

本文目录方块游戏平台怎么都是黑屏方块游戏平台打开后全白方块游戏平台仙剑可以用修改器吗《仙剑奇侠传三》在方块游戏平台下载的时候,为什么下载进度一直是零,进度条不动方块游戏平台怎么都是黑屏关于游戏黑屏可能出现的原因有以下几种:1.一般像970,

2024年7月12日 02:10

新天龙八部游戏(新天龙八部鬼谷最怕什么门派)

新天龙八部游戏(新天龙八部鬼谷最怕什么门派)

本文目录新天龙八部鬼谷最怕什么门派天龙八部3大概多长时间开一次新服新天龙八部怎么洗刀新天龙八部vip8需要充多少钱《新天龙八部》15周年庆,这款武侠网游为什么能生存这么长新天龙八部3d唯美版没有了吗2021新天龙八部需要什么配置新天龙八部最

2024年7月3日 20:17

英雄大作战破解版无限卡牌全英雄(英雄大作战技能表x怎样获得全人物角色)

英雄大作战破解版无限卡牌全英雄(英雄大作战技能表x怎样获得全人物角色)

大家好,今天小编来为大家解答以下的问题,关于英雄大作战破解版无限卡牌全英雄,英雄大作战技能表x怎样获得全人物角色这个很多人还不知道,现在让我们一起来看看吧!本文目录英雄大作战技能表x怎样获得全人物角色手机版英雄大作战X,破解版在哪里下载,要

2024年6月23日 06:46

陪我为什么不能登录了?《陪我》升级功能说明介绍

陪我为什么不能登录了?《陪我》升级功能说明介绍

其实陪我app的问题并不复杂,但是又很多的朋友都不太了解陪我为什么不能登录了,因此呢,今天小编就来为大家分享陪我app的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录陪我为什么不能登录了《陪我》升级功能说明介绍陪

2024年6月20日 21:59

三菱plc编程软件官网下载(三菱plc编程用的软件叫什么,怎么下载)

三菱plc编程软件官网下载(三菱plc编程用的软件叫什么,怎么下载)

大家好,三菱plc编程软件官网下载相信很多的网友都不是很明白,包括三菱plc编程用的软件叫什么,怎么下载也是一样,不过没有关系,接下来就来为大家分享关于三菱plc编程软件官网下载和三菱plc编程用的软件叫什么,怎么下载的一些知识点,大家可以

2024年5月23日 03:52

玩lol需要什么配置(玩LOL需要什么配置)

玩lol需要什么配置(玩LOL需要什么配置)

本文目录玩LOL需要什么配置想买一台电脑玩英雄联盟,但不知道英雄联盟需要的配置是多少有什么好电脑推荐要什么配置才能流畅玩英雄联盟玩英雄联盟顺畅配置要求玩英雄联盟笔记本电脑需要什么样的配置什么品牌比较好玩英雄联盟,对于电脑的配置有什么要求吗l

2024年6月29日 07:37

什么是精雕近视手术?精雕编程步骤

什么是精雕近视手术?精雕编程步骤

本文目录什么是精雕近视手术精雕编程步骤精雕的特点如何在精雕软件中制作精雕图精雕如何分层雕刻啊精雕的用途精雕具体是做什么的北京精雕现在的发展前景怎么样北京精雕在什么地方北京精雕铝雕和木头精雕有什么区别什么是精雕近视手术精雕近视手术是以波前像差

2023年9月14日 12:40

手机cad快速看图软件免费下载(CAD手机看图软件哪个好用)

手机cad快速看图软件免费下载(CAD手机看图软件哪个好用)

本篇文章给大家谈谈手机cad快速看图软件免费下载,以及CAD手机看图软件哪个好用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录CAD手机看图软件哪个好用手机看图纸,要下载什么软件cad快速看图手机版免费下载安装如何打开t3手

2024年5月19日 04:53

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索