JUnit(单元测试)

本文详细探讨了JUnit,一个广泛使用的Java单元测试框架。我们深入源码,了解其内部工作原理,包括测试注解、测试套件、断言机制等关键概念,帮助开发者更好地进行测试驱动开发。
JUnit(单元测试框架)    附件带包junit-4.4.jar    junit-4.4-src.jarjunit4.4包+源码
基本使用:
    一、搭建环境:
        导入junit.jar包(junit4)
    
    二、写测试类:
        1,一般一个类对应一个测试类。
        2,测试类与被测试类最好是放到同一个包中(可以是不同的源文件夹)
        3,测试类的名字为被测试类的名字加Test后缀。
    
    三:写测试方法:
        1,一般一个方法对应一个单元测试方法。
        2,测试方法的名字为test前缀加被测试方法的名字,如testAddPerson()。
        3,单元测试方法上面要加上@Test注解(org.junit.Test)!
        4,单元测试方法不能有参数,也不能有返回值(返回void)!测试的方法不能是静态的方法。
    
    四、测试方法的基本使用:
        1,可以单独执行一个测试方法,也可以一次执行所有的、一个包的、一个类中所有的测试方法。
        2,执行完后,显示绿色表示测试成功;显示红色表示测试失败(抛异常后会测试失败)。

Assert断言工具类
    其中有一些静态的工具方法(不符合期望就抛异常):
    assertTrue(...)        参数的值应是true
    assertFalse(...)    参数的值应是false  
    assertNull(...)        应是null值
    assertNotNull(...)    应是非null的值
    
    assertSame(...)        使用==比较的结果为true(表示同一个对象)
    AssertNotSame(...)    使用==比较的结果为false
    assertEquals(...)    两个对象equals()方法比较结果为true

用于准备环境、清理环境的方法
    @Test
        表示单元测试方法。
    
    @Before 
        所修饰的方法应是非static的(且没有参数,返回值为void)。
        表示这个方法会在本类中的每个单元测试方法之前都执行一次。
    
    @After 
        所修饰的方法应是非static的(且没有参数,返回值为void)。
        表示这个方法会在本类中的每个单元测试方法之后都执行一次。
    
    
    @BeforeClass 
        所修饰的方法应是static的(且没有参数,返回值为void)。
        表示这个方法会在本类中的所有单元测试方法之前执行, 只执行一次。
    
    @AfterClass 
        所修饰的方法应是static的(且没有参数,返回值为void)。
        表示这个方法会在本类中的所有单元测试方法之后执行, 只执行一次。
    
注意细节:如果点击方法名,类名,包名,工程名 运行JUnit分别测试的是对应的方法,类,包,工程中的所有test方法。

   
  1. package com.cn.junit;
  2. import static org.junit.Assert.*;
  3. import org.junit.After;
  4. import org.junit.AfterClass;
  5. import org.junit.Assert;
  6. import org.junit.Before;
  7. import org.junit.BeforeClass;
  8. import org.junit.Test;
  9. /**
  10. * Author:Liu Zhiyong(QQ:1012421396)
  11. * Version:Version_1
  12. * Date:2016年8月28日15:14:02
  13. * Desc:
  14. JUnit(单元测试框架)
  15. 基本使用:
  16. 一、搭建环境:
  17. 导入junit.jar包(junit4)
  18. 二、写测试类:
  19. 1,一般一个类对应一个测试类。
  20. 2,测试类与被测试类最好是放到同一个包中(可以是不同的源文件夹)
  21. 3,测试类的名字为被测试类的名字加Test后缀。
  22. 三:写测试方法:
  23. 1,一般一个方法对应一个单元测试方法。
  24. 2,测试方法的名字为test前缀加被测试方法的名字,如testAddPerson()。
  25. 3,单元测试方法上面要加上@Test注解(org.junit.Test)!
  26. 4,单元测试方法不能有参数,也不能有返回值(返回void)!测试的方法不能是静态的方法。
  27. 四、测试方法的基本使用:
  28. 1,可以单独执行一个测试方法,也可以一次执行所有的、一个包的、一个类中所有的测试方法。
  29. 2,执行完后,显示绿色表示测试成功;显示红色表示测试失败(抛异常后会测试失败)。
  30. Assert断言工具类
  31. 其中有一些静态的工具方法(不符合期望就抛异常):
  32. assertTrue(...) 参数的值应是true
  33. assertFalse(...) 参数的值应是false
  34. assertNull(...) 应是null值
  35. assertNotNull(...) 应是非null的值
  36. assertSame(...) 使用==比较的结果为true(表示同一个对象)
  37. AssertNotSame(...) 使用==比较的结果为false
  38. assertEquals(...) 两个对象equals()方法比较结果为true
  39. 用于准备环境、清理环境的方法
  40. @Test
  41. 表示单元测试方法。
  42. @Before
  43. 所修饰的方法应是非static的(且没有参数,返回值为void)。
  44. 表示这个方法会在本类中的每个单元测试方法之前都执行一次。
  45. @After
  46. 所修饰的方法应是非static的(且没有参数,返回值为void)。
  47. 表示这个方法会在本类中的每个单元测试方法之后都执行一次。
  48. @BeforeClass
  49. 所修饰的方法应是static的(且没有参数,返回值为void)。
  50. 表示这个方法会在本类中的所有单元测试方法之前执行,只执行一次。
  51. @AfterClass
  52. 所修饰的方法应是static的(且没有参数,返回值为void)。
  53. 表示这个方法会在本类中的所有单元测试方法之后执行,只执行一次。
  54. 注意细节:如果点击方法名,类名,包名,工程名 运行JUnit分别测试的是对应的方法,类,包,工程中的所有test方法。
  55. */
  56. public class Demo1 {
  57. // @Before
  58. @BeforeClass
  59. public static void beforeTest(){
  60. System.out.println("准备测试环境。。。");
  61. }
  62. @Test //注解
  63. // public static void test1(int a, int b){ //× 4,单元测试方法不能有参数,也不能有返回值(返回void)!测试的方法不能是静态的方法。
  64. public void test1(){
  65. System.out.println("哈哈哈,测试junit。。。。");
  66. // throw new RuntimeException();
  67. }
  68. @Test //注解
  69. public void test2(){
  70. System.out.println("成功了。。。");
  71. // Assert.assertSame("abc", new String("abc")); //底层使用==比较的 false
  72. Assert.assertEquals("abc", new String("abc")); //底层使用equals比较的 true
  73. Assert.assertNull(null);
  74. Assert.assertTrue(true);
  75. }
  76. //清理测试环境
  77. // @After
  78. @AfterClass
  79. public static void afterTest(){
  80. System.out.println("清理测试环境。。。");
  81. }
  82. }

Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions.TestSetup.class junit.extensions.package-info.class junit.framework.Assert.class junit.framework.AssertionFailedError.class junit.framework.ComparisonCompactor.class junit.framework.ComparisonFailure.class junit.framework.JUnit4TestAdapter.class junit.framework.JUnit4TestAdapterCache.class junit.framework.JUnit4TestCaseFacade.class junit.framework.Protectable.class junit.framework.Test.class junit.framework.TestCase.class junit.framework.TestFailure.class junit.framework.TestListener.class junit.framework.TestResult.class junit.framework.TestSuite.class junit.framework.package-info.class junit.runner.BaseTestRunner.class junit.runner.TestRunListener.class junit.runner.Version.class junit.runner.package-info.class junit.textui.ResultPrinter.class junit.textui.TestRunner.class junit.textui.package-info.class org.hamcrest.BaseDescription.class org.hamcrest.BaseMatcher.class org.hamcrest.CoreMatchers.class org.hamcrest.Description.class org.hamcrest.Factory.class org.hamcrest.Matcher.class org.hamcrest.SelfDescribing.class org.hamcrest.StringDescription.class org.hamcrest.core.AllOf.class org.hamcrest.core.AnyOf.class org.hamcrest.core.DescribedAs.class org.hamcrest.core.Is.class org.hamcrest.core.IsAnything.class org.hamcrest.core.IsEqual.class org.hamcrest.core.IsInstanceOf.class org.hamcrest.core.IsNot.class org.hamcrest.core.IsNull.class org.hamcrest.core.IsSame.class org.hamcrest.internal.ArrayIterator.class org.hamcrest.internal.SelfDescribingValue.class org.hamcrest.internal.SelfDescribingValueIterator.class org.junit.After.class org.junit.AfterClass.class org.junit.Assert.class org.junit.Assume.class org.junit.Before.class org.junit.BeforeClass.class org.junit.ComparisonFailure.class org.junit.Ignore.class org.junit.Rule.class org.junit.Test.class org.junit.experimental.ParallelComputer.class org.junit.experimental.categories.Categories.class org.junit.experimental.categories.Category.class org.junit.experimental.max.CouldNotReadCoreException.class org.junit.experimental.max.MaxCore.class org.junit.experimental.max.MaxHistory.class org.junit.experimental.results.FailureList.class org.junit.experimental.results.PrintableResult.class org.junit.experimental.results.ResultMatchers.class org.junit.experimental.runners.Enclosed.class org.junit.experimental.theories.DataPoint.class org.junit.experimental.theories.DataPoints.class org.junit.experimental.theories.ParameterSignature.class org.junit.experimental.theories.ParameterSupplier.class org.junit.experimental.theories.ParametersSuppliedBy.class org.junit.experimental.theories.PotentialAssignment.class org.junit.experimental.theories.Theories.class org.junit.experimental.theories.Theory.class org.junit.experimental.theories.internal.AllMembersSupplier.class org.junit.experimental.theories.internal.Assignments.class org.junit.experimental.theories.internal.ParameterizedAssertionError.class org.junit.experimental.theories.suppliers.TestedOn.class org.junit.experimental.theories.suppliers.TestedOnSupplier.class org.junit.internal.ArrayComparisonFailure.class org.junit.internal.AssumptionViolatedException.class org.junit.internal.ComparisonCriteria.class org.junit.internal.ExactComparisonCriteria.class org.junit.internal.InexactComparisonCriteria.class org.junit.internal.JUnitSystem.class org.junit.internal.RealSystem.class org.junit.internal.TextListener.class org.junit.internal.builders.AllDefaultPossibilitiesBuilder.class org.junit.internal.builders.AnnotatedBuilder.class org.junit.internal.builders.IgnoredBuilder.class org.junit.internal.builders.IgnoredClassRunner.class org.junit.internal.builders.JUnit3Builder.class org.junit.internal.builders.JUnit4Builder.class org.junit.internal.builders.NullBuilder.class org.junit.internal.builders.SuiteMethodBuilder.class org.junit.internal.matchers.CombinableMatcher.class org.junit.internal.matchers.Each.class org.junit.internal.matchers.IsCollectionContaining.class org.junit.internal.matchers.StringContains.class org.junit.internal.matchers.SubstringMatcher.class org.junit.internal.matchers.TypeSafeMatcher.class org.junit.internal.requests.ClassRequest.class org.junit.internal.requests.FilterRequest.class org.junit.internal.requests.SortingRequest.class org.junit.internal.requests.package-info.class org.junit.internal.runners.ClassRoadie.class org.junit.internal.runners.ErrorReportingRunner.class org.junit.internal.runners.FailedBefore.class org.junit.internal.runners.InitializationError.class org.junit.internal.runners.JUnit38ClassRunner.class org.junit.internal.runners.JUnit4ClassRunner.class org.junit.internal.runners.MethodRoadie.class org.junit.internal.runners.MethodValidator.class org.junit.internal.runners.SuiteMethod.class org.junit.internal.runners.TestClass.class org.junit.internal.runners.TestMethod.class org.junit.internal.runners.model.EachTestNotifier.class org.junit.internal.runners.model.MultipleFailureException.class org.junit.internal.runners.model.ReflectiveCallable.class org.junit.internal.runners.package-info.class org.junit.internal.runners.statements.ExpectException.class org.junit.internal.runners.statements.Fail.class org.junit.internal.runners.statements.FailOnTimeout.class org.junit.internal.runners.statements.InvokeMethod.class org.junit.internal.runners.statements.RunAfters.class org.junit.internal.runners.statements.RunBefores.class org.junit.matchers.JUnitMatchers.class org.junit.matchers.package-info.class org.junit.package-info.class org.junit.rules.ErrorCollector.class org.junit.rules.ExpectedException.class org.junit.rules.ExternalResource.class org.junit.rules.MethodRule.class org.junit.rules.TemporaryFolder.class org.junit.rules.TestName.class org.junit.rules.TestWatchman.class org.junit.rules.Timeout.class org.junit.rules.Verifier.class org.junit.runner.Computer.class org.junit.runner.Describable.class org.junit.runner.Description.class org.junit.runner.JUnitCore.class org.junit.runner.Request.class org.junit.runner.Result.class org.junit.runner.RunWith.class org.junit.runner.Runner.class org.junit.runner.manipulation.Filter.class org.junit.runner.manipulation.Filterable.class org.junit.runner.manipulation.NoTestsRemainException.class org.junit.runner.manipulation.Sortable.class org.junit.runner.manipulation.Sorter.class org.junit.runner.manipulation.package-info.class org.junit.runner.notification.Failure.class org.junit.runner.notification.RunListener.class org.junit.runner.notification.RunNotifier.class org.junit.runner.notification.StoppedByUserException.class org.junit.runner.notification.package-info.class org.junit.runner.package-info.class org.junit.runners.AllTests.class org.junit.runners.BlockJUnit4ClassRunner.class org.junit.runners.JUnit4.class org.junit.runners.Parameterized.class org.junit.runners.ParentRunner.class org.junit.runners.Suite.class org.junit.runners.model.FrameworkField.class org.junit.runners.model.FrameworkMember.class org.junit.runners.model.FrameworkMethod.class org.junit.runners.model.InitializationError.class org.junit.runners.model.RunnerBuilder.class org.junit.runners.model.RunnerScheduler.class org.junit.runners.model.Statement.class org.junit.runners.model.TestClass.class org.junit.runners.package-info.class org/hamcrest/core/package.html org/hamcrest/package.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值