仪器网(yiqi.com)欢迎您!

| 注册 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-直播- 视频

问答社区

如何使用junit编写测试类

cllpofh25140 2016-12-20 08:09:56 244  浏览
  •  

参与评论

全部评论(1条)

  • 新起点justdoit 2016-12-21 00:00:00
      首先我们需要先下载相应的 JUnit 相关的 JAR 包,下载的过程可以去 JUnit 的官方网站,也可以直接通过 Maven 资源仓库来完成。   使用简单的 @Test 注解实现我们的测试方法的编写和执行   准备工作做好之后,接下来我们就可以开始尝试编写壹个简单的测试代码了。首先,我们编写了壹个 Calculator 类,并提供五个方法分别完成加减乘除以及求平方的运算。代码如下:   package net.oschina.bairrfhoinn.main;   public class Calculator {   public void add(int n){   result += n;   }   public void substract(int n){   result -= n;   }   public void multiply(int n){   result *= n;   }   public void divide(int n){   result /= n;   }   public void square(int n){   result = n * n;   }   public int getReuslt(){   return result;   }   public void clear(){   result = 0;   }   private static int result;   }      在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。Z主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分功能就有了。还有一句话也非常地重要“import static org.junit.Assert.*;”,我们在测试的时候使用的壹系列assertEquals()方法就来自这个包。大家注意壹下,这是壹个静态包含(static),是JDK5中新增添的壹个功能。也就是说,assertEquals是Assert类中的壹系列的静态方法,壹般的使用方式是Assert. assertEquals(),但是使用了静态包含后,前面的类名就可以省略了,使用起来更加的方便。   另外要注意的是,我们的测试类是壹个独立的类,没有任何父类。测试类的名字也可以任意命名,没有任何局限性。所以我们不能通过类的声明来判断它是不是一个测试类,它与普通类的区别在于它内部的方法的声明,我们接着会讲到。在测试类中,并不是每壹个方法都是用于测试的,所以我们必须使用“注解”来明确表明哪些是测试方法。“注解”也是JDK5的壹个新特性,用在此处非常恰当。我们可以看到,在某些方法的前有@Before、@Test、@Ignore等字样,这些就是注解,以壹个“@”作为开头。这些注解都是JUnit4自定义的,熟练掌握这些注解的含义,对于编写恰当的测试类非常重要。   接下来我们创建壹个测试类 CalculatorTest.java,代码如下:   package net.oschina.bairrfhoinn.test;   import static org.junit.Assert.*;   import org.junit.Test;   import net.oschina.bairrfhoinn.main.Calculator;   public class CalculatorTest {   private static Calculator calculator = new Calculator();   @Test   public void testAdd(){   calculator.add(7);   calculator.add(8);   assertEquals(15, calculator.getReuslt());   }   }      首先,我们要在方法的前面使用@Test标注,以表明这是壹个测试方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出壹个异常。至于方法内该写些什么,那就要看你需要测试些什么了。比如上述代码中,我们想测试壹下add()方法的功能是否正确,就在测试方法中调用几次add函数,初始值为0,先加7,再加8,我们期待的结果应该是15。如果Z终实际结果也是15,则说明add()方法是正确的,反之说明它是错的。assertEquals(15, calculator.getResult());就是用来判断期待结果和实际结果是否相等,其中第壹个参数填写期待结果,第二个参数填写实际结果,也就是通过计算得到的结果。这样写好之后,JUnit 会自动进行测试并把测试结果反馈给用户。   如果想运行它,可以在 eclipse 的资源管理器中选择该类文件,然后点击右键,选择 Run As->JUnit Test 即可看到运行结果。   使用@Test 的属性 Ignore 指定测试时跳过这个方法   如果在写程序前做了很好的规划,那么哪些方法是什么功能都应该实现并且确定下来。因此,即使该方法尚未完成,他的具体功能也是确定的,这也就意味着你可以为他编写测SY例。但是,如果你已经把该方法的测SY例写完,但该方法尚未完成,那么测试的时候无疑是“失败”。这种失败和真正的失败是有区别的,因此 JUnit 提供了壹种方法来区别他们,那就是在这种测试函数的前面加上 @Ignore 标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。壹旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。   比如说上面的测试类 Calculator.java 中,假设我们的 Calculator 类的 multiply() 方法没有实现,我们可以在测试类 CalculatorTest 中先写如下测试代码:   package net.oschina.bairrfhoinn.test;   import static org.junit.Assert.*;   import org.junit.Ignore;   import org.junit.Test;   import net.oschina.bairrfhoinn.main.Calculator;   public class CalculatorTest {   private static Calculator calculator = new Calculator();   ... //此处代码省略   @Ignore("method square() not implemented, please test this later...")   @Test   public void testSquare(){   calculator.square(3);   assertEquals(9, calculator.getReuslt());   }   }

    赞(17)

    回复(0)

    评论

获取验证码
我已经阅读并接受《仪器网服务协议》

热门问答

如何使用junit编写测试类
 
2016-12-20 08:09:56 244 1
如何使用junit编写测试类
 
2017-04-02 20:40:22 309 1
如何编写测试类来测试多线程?
线程类是引入外部的,我们无法对其进行修改,想编写Junit测试类进行多线程测试,我网上找到了GroboUtils插件,但发现该组件必须要求被测试的多线程类继承该组件提供的TestRunner类并且实现其runTest方法,而我们的多线程类是购买的第三方的,继承的是Trhead类... 线程类是引入外部的,我们无法对其进行修改,想编写Junit测试类进行多线程测试,我网上找到了GroboUtils插件,但发现该组件必须要求被测试的多线程类继承该组件提供的TestRunner类并且实现其runTest方法,而我们的多线程类是购买的第三方的,继承的是Trhead类,请问这种情况下有没有什么方法或多线程测试组件,可以支持编写Junit多线程测试框架来进行多线程测试,谢谢各位前辈 展开
2016-10-01 12:06:19 332 1
如何使用eclipse进行junit测试
 
2017-06-13 10:34:17 292 1
如何使用eclipse进行junit测试
 
2018-12-03 08:26:48 195 0
idea怎么使用idea添加junit case测试类
 
2017-05-23 05:06:37 520 1
junit找不到测试类,Junit测试类里面有多个test,每个test之间
 
2017-06-29 21:57:39 366 1
java和junit写类与测试类
数字图书馆系统中有一个类book,有“书名(name)”、作者(author) 可借出数(availNum)等属性,有“构造器(book)、设置可借出数(setAvailNum)”、预借(subscribe)、取消预借(cancelSubscribe)等操作。若availNum非零,“预借”操作使availNum减一... 数字图书馆系统中有一个类book,有“书名(name)”、作者(author) 可借出数(availNum)等属性,有“构造器(book)、设置可借出数(setAvailNum)”、预借(subscribe)、取消预借(cancelSubscribe)等操作。若availNum非零,“预借”操作使availNum减一;若availNum为零,“预借”为空操作。“取消预借”使availNum 加一。请用Java和junit写出book类及其测试类的源码 展开
2008-07-23 16:12:03 322 4
如何使用Junit测试使用Spring框架的代码
 
2018-11-12 10:46:18 375 0
Junit测试类中方法顺序打乱
Junit中测试类中的方法顺序本来是A B C的,可以执行测试,类中的方法顺序就打乱了,测试也就出错,求大神指
2012-07-29 07:54:19 210 4
junit对一个类进行一次测试
对junit4.0单元测试有点疑惑,假设某个类中有许多方法,用@Test注解去进行测试,那么如何一次性测完?我知道在outline窗口中有对单个方法中进行测试的,但是,如果方法过多那还这样子不是很麻烦吗?有没有一次测完并且能够定位到哪个方法出错的,类似junit3的... 对junit4.0单元测试有点疑惑,假设某个类中有许多方法,用@Test注解去进行测试,那么如何一次性测完?我知道在outline窗口中有对单个方法中进行测试的,但是,如果方法过多那还这样子不是很麻烦吗?有没有一次测完并且能够定位到哪个方法出错的,类似junit3的suite.addTest()可以增加的那种,我想这也是我搞不懂@Suite注解一次测试的一个原因吧,我感觉的我的问题有点奇怪,但是希望明白的可以说一下 展开
2014-09-13 21:08:11 307 1
编写java程序 学生类和测试类
2018-11-29 03:10:56 275 0
Myeclipse中怎么编写测试类
如图一个简单投票系统的网页, 编写两个JSP,display负责显示投票界面,vote负责接受用户的投票,将对应的教师的得票数加1,工作完成后再跳转回diyi个JSP。就是第三点,TestDao的代码如何书写。
2015-05-12 22:57:23 292 1
java编写测试类 急求!!!!!!!!!!!!!
定义一个类。在类中定义一个方法,功能输出”Hello World!”字符串。将该类存放在a.org.com包中 2.编写测试类,测试上述类。测试类存放在b.org.com包中。 第二个测试类test怎么编写 如何测试,拜托大神了!!!!!!!!!!!!!!!! package org.ly... 定义一个类。在类中定义一个方法,功能输出”Hello World!”字符串。将该类存放在a.org.com包中 2.编写测试类,测试上述类。测试类存放在b.org.com包中。 第二个测试类test怎么编写 如何测试,拜托大神了!!!!!!!!!!!!!!!! package org.ly.demo; public class Hello{ public String getInfo(){ return "Hello World!!!"; } } 展开
2013-11-25 16:36:31 357 2
Eclipse中怎么使用junit测试
 
2016-01-10 23:46:13 359 2
myeclipse怎么使用junit测试接口
 
2018-11-18 13:21:38 209 0
myeclipse中Junit测试类怎么在里面添加已有类?
 
2018-11-13 12:06:24 258 0
如何编写测试程序
我用java写了很多类,并且这每个类都能够正确被创建,我现在想建一个test类主要用来使用前面定义的各种类,但是继承只能继承一个类,然后要用接口,我是不是要把前边定义的这些类改成接口啊,如果不改成接口,该如何写这个test类的程序?
2010-10-17 09:26:12 401 3
junit测试类怎么打包成jar文件
 
2018-05-18 21:49:25 358 1
运行JUnit 出现找不到测试类的问题
Class not found com.courses.test.CourseMessageDaoImplTest java.lang.ClassNotFoundException: com.courses.test.CourseMessageDaoImplTest at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Nativ... Class not found com.courses.test.CourseMessageDaoImplTest java.lang.ClassNotFoundException: com.courses.test.CourseMessageDaoImplTest at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:425) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 怎么找不到测试类呢? 展开
2016-07-30 13:27:40 467 1

10月突出贡献榜

推荐主页

最新话题