junit4怎么导入(myeclipse怎么导入junit)
本文目录
myeclipse怎么导入junit
1. 下载JUnit的jar文件
2. 在MyEclipse中新建一个要测试的项目HelloJUnit
3. 添加一个要测试的类HelloJUnit,代码如下,注意需要先建package
package com.zhao; public class HelloJUnit { public String getMessage(){ return “Hello Junit“; } }4. 新建一个单元测试项目,命名为HelloJUnitTest,引用在第一步中下载的jar文件
5. 添加测试类,HelloJUnitTest,需要提前建package
package com.zhao; /*引用测试相关类和方法*/ import org.junit.Test; import org.junit.Before; import static org.junit.Assert.*; public class HelloJUnitTest { private HelloJUnit _target; @Before public void beforeTest(){ _target = new HelloJUnit(); } @Test public void testGetMessage(){ String expected = “Hello Junit“; String actual = _target.getMessage(); assertEquals(expected,actual); } }6. 运行测试,在项目上单击右键,然后选择Run as --》 JUnit Test
maven如何在pom文件中添加junit4工具包
《dependencies》 《!-- junit --》 《dependency》 《groupId》junit《/groupId》 《artifactId》junit《/artifactId》 《version》4.8.2《/version》 《/dependency》
介绍一下JUnit4
测试的概念 长期以来,我所接触的软件开发人员很少有人能在开发的过程中进行测试工作。大部分的项目都是在最终验收的时候编写测试文档。有些项目甚至没有测试文档。现在情况有了改变。我们一直提倡UML、RUP、软件工程、CMM,目的只有一个,提高软件编写的质量。举一个极端的例子:如果你是一个超级程序设计师,一个传奇般的人物。(你可以一边喝咖啡,一边听着音乐,同时编写这操作系统中关于进程调度的模块,而且两天时间内就完成了!)我真得承认,有这样的人。(那个编写UNIX中的vi器的家伙就是这种人。)然而非常遗憾的是这些神仙们并没有留下如何修成正果的README。所以我们这些凡人--在同一时间只能将注意力集中到若干点(据科学统计,我并不太相信,一般的人只能同时考虑最多7个左右的问题,高手可以达到12个左右),而不能既纵览全局又了解细节--只能期望于其他的方式来保证我们所编写的软件质量。 为了说明我们这些凡人是如何的笨。有一个聪明人提出了软件熵(software entropy)的概念:一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻。你可能会争辩,在这个例子中,设计很好的状态实际上并不好,如果好的话,就不会发生你所说的情况。是的,看来你变聪明了,可惜你还应该注意到两个问题:1)我们不能指望在恐龙纪元(大概是十年前)设计的结构到了现在也能适用吧。2)拥有签字权的客户代表可不理会加入一个新功能是否会对软件的结构有什么影响,即便有影响也是程序设计人员需要考虑的问题。如果你拒绝加入这个你认为致命的新功能,那么你很可能就失去了你的住房贷款和面包(对中国工程师来说也许是米饭或面条,要看你是南方人还是北方人)。 另外,需要说明的是我看过的一些讲解测试的书都没有我写的这么有人情味(不好意思...)。我希望看到这片文章的兄弟姐妹能很容易地接受测试的概念,并付诸实施。所以有些地方写的有些夸张,欢迎对测试有深入理解的兄弟姐妹能体察民情,并不吝赐教。 好了,我们现在言归正传。要测试,就要明白测试的目的。我认为测试的目的很简单也极具吸引力:写出高质量的软件并解决软件熵这一问题。想象一下,如果你写的软件和Richard Stallman(GNU、FSF的头儿)写的一样有水准的话,是不是很有成就感?如果你一致保持这种高水准,我保证你的薪水也会有所变动。 测试也分类,白箱测试、黑箱测试、单元测试、集成测试、功能测试...。我们先不管有多少分类,如何分类。先看那些对我们有用的分类,关于其他的测试,有兴趣的人可参阅其他资料。白箱测试是指在知道被测试的软件如何(How)完成功能和完成什么样(What)的功能的条件下所作的测试。一般是由开发人员完成。因为开发人员最了解自己编写的软件。本文也是以白箱测试为主。黑箱测试则是指在知道被测试的软件完成什么样(What)的功能的条件下所作的测试。一般是由测试人员完成。黑箱测试不是我们的重点。本文主要集中在单元测试上,单元测试是一种白箱测试。目的是验证一个或若干个类是否按所设计的那样正常工作。集成测试则是验证所有的类是否能互相配合,协同完成特定的任务,目前我们暂不关心它。下面我所提到的测试,除非特别说明,一般都是指单元测试。 需要强调的是:测试是一个持续的过程。也就是说测试贯穿与开发的整个过程中,单元测试尤其适合于迭代增量式(iterative and incremental)的开发过程。Martin Fowler(有点儿像引用孔夫子的话)甚至认为:“在你不知道如何测试代码之前,就不应该编写程序。而一旦你完成了程序,测试代码也应该完成。除非测试成功,你不能认为你编写出了可以工作的程序。”我并不指望所有的开发人员都能有如此高的觉悟,这种层次也不是一蹴而就的。但我们一旦了解测试的目的和好处,自然会坚持在开发过程中引入测试。 因为我们是测试新手,我们也不理会那些复杂的测试原理,先说一说最简单的:测试就是比较预期的结果是否与实际执行的结果一致。如果一致则通过,否则失败。看下面的例子: //将要被测试的类 public class Car { public int getWheels() { return 4; } } //执行测试的类 public class testCar { public static void main(String args) { testCar myTest = new testCar(); myTest.testGetWheels(); } public testGetWheels() { int expectedWheels = 4; Car myCar = Car(); if (expectedWheels==myCar.getWheels()) System.out.println(“test % java junit.textui.TestRunner testCar 别担心你要敲的字符量,以后在IDE中,只要点几下鼠标就成了。运行结果应该如下所示,表明执行了一个测试,并通过了测试: . Time: 0 OK (1 tests) 如果我们将Car.getWheels()中返回的的值修改为3,模拟出错的情形,则会得到如下结果: .F Time: 0 There was 1 failure: 1) testGetWheels(testCar)junit.work.AssertionFailedError: expected:《4》 but was:《3》 at testCar.testGetWheels(testCar.java:37) FAILURES!!! Tests run: 1, Failures: 1, Errors: 0 注意:Time上的小点表示测试个数,如果测试通过则显示OK。否则在小点的后边标上F,表示该测试失败。注意,在模拟出错的测试中,我们会得到详细的测试报告“expected:《4》 but was:《3》”,这足以告诉我们问题发生在何处。下面就是你调试,测试,调试,测试...的过程,直至得到期望的结果。 Design by Contract(这句话我没法翻译) Design by Contract本是Bertrand Meyer(Eiffel语言的创始人)开发的一种设计技术。我发现在JUnit中使用Design by Contract会带来意想不到的效果。Design by Contract的核心是断言(assersion)。断言是一个布尔语句,该语句不能为假,如果为假,则表明出现了一个bug。Design by Contract使用三种断言:前置条件(pre-conditions)、后置条件(post-conditions)和不变式(invariants)这里不打算详细讨论Design by Contract的细节,而是希望其在测试中能发挥其作用。 前置条件在执行测试之前可以用于判断是否允许进入测试,即进入测试的条件。如 expectedWheels 》 0, myCar != null。后置条件用于在测试执行后判断测试的结果是否正确。如 expectedWheels==myCar.getWheels()。而不变式在判断交易(Transaction)的一致性(consistency)方面尤为有用。我希望JUnit可以将Design by Contract作为未来版本的一个增强。 Refactoring(这句话我依然没法翻译) Refactoring本来与测试没有直接的联系,而是与软件熵有关,但既然我们说测试能解决软件熵问题,我们也就必须说出解决之道。(仅仅进行测试只能发现软件熵,Refactoring则可解决软件熵带来的问题。)软件熵引出了一个问题:是否需要重新设计整个软件的结构?理论上应该如此,但现实不允许我们这么做。这或者是由于时间的原因,或者是由于费用的原因。重新设计整个软件的结构会给我们带来短期的痛苦。而不停地给软件打补丁甚至是补丁的补丁则会给我们带来长期的痛苦。(不管怎样,我们总处于水深火热之中) Refactoring是一个术语,用于描述一种技术,利用这种技术我们可以免于重构整个软件所带来的短期痛苦。当你refactor时,你并不改变程序的功能,而是改变程序内部的结构,使其更易理解和使用。如:该变一个方法的名字,将一个成员变量从一个类移到另一个类,将两个类似方法抽象到父类中。所作的每一个步都很小,然而1-2个小时的Refactoring工作可以使你的程序结构更适合目前的情况。Refactoring有一些规则: 1》 不要在加入新功能的同时refactor已有的代码。在这两者间要有一个清晰的界限。如每天早上1-2个小时的Refactoring,其余时间添加新的功能。 2》 在你开始Refactoring前,和Refactoring后都要保证测试能顺利通过。否则Refactoring没有任何意义。 3》 进行小的Refactoring,大的就不是Refactoring了。如果你打算重构整个软件,就没有必要Refactoring了。 只有在添加新功能和调试bug时才又必要Refactoring。不要等到交付软件的最后关头才Refactoring。那样和打补丁的区别不大。Refactoring 用在回归测试中也能显示其威力。要明白,我不反对打补丁,但要记住打补丁是应该最后使用的必杀绝招。(打补丁也需要很高的技术,详情参看微软网站) IDE对JUnit的支持 目前支持JUnit的Java IDE 包括 IDE 方式 个人评价(1-5,满分5) Forte for Java 3.0 Enterprise Edition plug-in 3 JBuilder 6 Enterprise Edition integrated with IDE 4 Visual Age for Java support N/A 在IDE中如何使用JUnit,是非常具体的事情。不同的IDE有不同的使用方法。一旦理解了JUnit的本质,使用起来就十分容易了。所以我们不依赖于具体的IDE,而是集中精力讲述如何利用JUnit编写单元测试代码。心急的人可参看资料。
junit4怎么添加到eclipse
在Eclipse中引入JUnitjar文件右键 Build Path --Configure Build Path在弹出的对话框中选择 Libraries , Add Library选中JUnit, 单击 Next选择JUnit library version, 选择 JUnit 4 这是新版本,点击Finish点击 ok 就可以在工程中看到 JUnit的jar文件了。
怎么创建junit4 注入spring 配置文件
1 建立一个test的目录,在此目录下放置所有的JunitTestCase类和TestCase的配置文件2 将项目中的Spring配置文件(默认名称为applicationContext.xml)复制到test目录下,并重新命名为JunitTestConf.xml。3 根据Junit测试的需要修改JunitTestConf.xml文件中的内容,如数据库连接等。4 新建一个名为SpringConfForTest.java的类,在此类中配置Spring启动所需的配置文件,并启动Spring。此类的内容如下:package test;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.soma.global.WebContextHolder;public class SpringConfForTest { @BeforeClass public static void setUpBeforeClass() throws Exception { //Spring启动所需要的配置参数文件,其中test/JunitTestConf.xml文件中保存了数据库连接等参数,可根据具体情况做修改 String paths = new String {“test/JunitTestConf.xml“, “com/soma/conf/applicationContext-dao-hr.xml“,“com/soma/conf/applicationContext-dao.xml“,“com/soma/conf/applicationContext-dao-bug.xml“,“com/soma/conf/applicationContext-dao-change.xml“,“com/soma/conf/applicationContext-dao-common.xml“,“com/soma/conf/applicationContext-service-hr.xml“ }; //启动Spring,得到Spring环境上下文 ApplicationContext ctx = new ClassPathXmlApplicationContext(paths); //在此类启动时,将Spring环境上下文保存到单根类WebContextHolder中,以提供给其它的测试类使用 WebContextHolder.getInstence().setApplicationContext(ctx); } @AfterClass public static void tearDownAfterClass() throws Exception { } @Test public void test(){ //必须要写一个test空方法,否则SpringConfForTest类不会启动 }} 5 新建TestSuite类,类名为AllTests,类的内容如下所示:package test;import junit.framework.Test;import junit.framework.TestSuite;import org.junit.runner.RunWith;import org.junit.runners.Suite;import test.com.soma.domain.busilogic.hr.HrBusiLogicTest;import test.com.soma.domain.service.hr.checkOverTimeDateTest;@RunWith(Suite.class)@Suite.SuiteClasses({ SpringConfForTest.class, HrBusiLogicTest.class, checkOverTimeDateTest.class})/** * 批量执行Junit测试类,把类名写入到上面的Suite.SuiteClasses({})中,用逗号分隔 */public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(“Test for test“); //$JUnit-BEGIN$ //$JUnit-END$ return suite; }}注意:将SpringConfForTest.class放在第一个执行,以启动Spring配置环境,把自己的TestCase类放到后面,用逗号分开。在测试时,只要执行这个TestSuite类就可以了。6 写自己的TestCase类,以CheckOverTimeDateTest.java为例子,文件内容如下:public class CheckOverTimeDateTest { private static HrTbovertimeManager hrTbovertimeManager; private static ExcuteSqlDAO excuteSqlDAO; @BeforeClass public static void setUpBeforeClass() throws Exception { //从Spring上下文中得到hrTbovertimeManager接口类的实例 hrTbovertimeManager=(HrTbovertimeManager)BeanUtil.getBean(“hrTbovertimeManager“);excuteSqlDAO = (ExcuteSqlDAO) BeanUtil.getBean(“excuteSqlDAO“); } @Test public void testGetProjectList()throws Exception { List《OvertimeDetailValue》 overtimeDetailValueList = new ArrayList《OvertimeDetailValue》(); int index = 9; for(int i = 1 ;i 《= index;i++){ OvertimeDetailValue overtimeDetailValue = new OvertimeDetailValue(); overtimeDetailValue.setOtApplyDate(“2009-05-0“+i); overtimeDetailValueList.add(overtimeDetailValue); } String resultStr = hrTbovertimeManager.checkOverTimeDate(overtimeDetailValueList); assertEquals(“false“, resultStr); }/** * 导入2009-03月份出勤记录excel文件,返回null表示导入成功,需要先删除3月份的数据 */ @Test public void testSaveExcelDutyInformation() throws Exception{ // 在导入3月份出勤记录前先删除3月份的记录,执行delete from hr_tbdutyinformation; excuteSqlDAO.excuteSql(“delete from hr_tbdutyinformation where dutydate》=’2009-02-26’ and dutydate《=’2009-03-25’“); // System.out.println(“----------“+System.getProperty(“user.dir“)+“/src/test/duty200903.xls“); String fileName = System.getProperty(“user.dir“) + “/src/test/duty200903.xls“; assertNull(hrTbdutyInformationManager.saveExcelDutyInformation(fileName)); }}说明:BeanUtil.getBean(““)相当于WebContextHolder.getInstence().getApplicationContext().getBean(““),只是对此方法做了封装。7 在Eclipse中,启动AllTests,选择“Run As JunitTest”,即可先启动Spring环境,再依次运行你自己所写的JunitTestCase,是不是很简单哪?赶快动手试试吧。
更多文章:

thrust的过去式和过去分词(英语的动词变过去式和过去分词有多少个不规则动词)
2025年3月6日 13:50

slideshare网站(有一个english ppt的网站,外教上课的时候经常用 内容涉及各个领域 请问是什么网站)
2025年4月10日 01:50

javascriptjavascript教师(前端学习中 先学好javascript还是先学jquery框架)
2025年3月8日 06:40

guaranteed是什么意思(quality guaranteed是什么意思)
2025年2月21日 18:50

内存管理有哪几种方式(为什么现在手机 256G 越来越不够用了有哪些内存管理的技巧)
2025年3月3日 00:50

cocos creator官网(新人第一次用cocos creator ,js文件保存后总是显示错误)
2025年2月21日 00:00

财经网站源码(谁能帮我将通达信的指标源代码转化成文华财经的)
2025年3月25日 22:30

eclipse怎么添加插件(如何在eclipse中添加maven插件)
2025年4月12日 06:10

百度ueditor编辑器(百度ueditor编辑器如何显示、修改从数据库中的数据)
2025年2月27日 02:20

python中range函数的用法(python中range的问题)
2025年2月26日 22:30

linuxshell命令(python如何模拟ssh登录Linux服务器,并执行shell命令)
2025年2月17日 19:00