junit 学习(1)--Eclipse下的环境搭建

之前写selenium学习1的时候,发现还应该先了解一下junit的知识,所以决定把junit的知识先提前一点总结总结。

  下面要写的目的是:在Eclipse中,演示如何创建一个junit的测试用例。

   使用的eclise版本为:Version: 3.6.1

   大体的步骤

  •    创建project
  •    添加junit包
  •    创建一个待测试的类JDemo.java
  •    为JDemo.java创建一个Junit测试用例JDemoTest.java
  •    运行测试

 

  1. 创建一个project  :【new】-》【project】   (以下截图是操作过程的主要步骤,并非所有)

junit 学习(1) - 流口水的小猪 - 轨迹
2. 然后在project的名字上,右键,打开属性窗口,通过【Java build path】-》【library】-》【Add library】添加junit的包。
junit 学习(1) - 流口水的小猪 - 轨迹
添加的时候,我们选择junit4 (目前最高版本的junit)
要说明的,其中添加junit包在创建project的时候也可以添加的,就是点击第一张图片的时候“Next”进入添加页面。
 3. 创建一个java文件JDemo.java,后面要利用junit对其进行测试

 JDemo.java  

它实现了一个加法的算法。

 public class JDemo  {

    int a;

    int b;

    int result;

   

    public int add(int a, int b){

       result = a+b;

       return result;

    }

}

4. 为此JDemo.java 类创建一个junit测试用例,在该类的名称上【右键】-》【new】-【Junit Test case】  
junit 学习(1) - 流口水的小猪 - 轨迹
(主要,如果没有在该类的名称上点击,窗口下方的“Class under test” 就会为空,如果为空,“Next”键就不可用,也就没有下图的操作。当然,下图的操作也不是必须的,只是按下图操作,Eclipse会自动为我们在测试用例中创建一个测试方法而已,后面可以看到)
点击【next】
junit 学习(1) - 流口水的小猪 - 轨迹
选择我们想要测试的JDemo.java 中想要测试的方法add()
点击【Finish】后,Eclipse就会为我们创建一个用例测试JDemo.java 的测试用例JDemoTest.java,并且还自动创建了一个测试方法TestAdd()
junit 学习(1) - 流口水的小猪 - 轨迹
正如前面所说,如果没有选择要测试的方法的那一步,只是这里会少一个测试方法testAdd()而已,这是可以自己手动加入的,并无实质的影响。
然后再修改JDemoTest测试用例中的testAdd就行了,按如下修改
 JDemoTest.java
 

import static org.junit.Assert.*;

 

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

 

 

public class JDemoTest {

 

         @BeforeClass

         public static void setUpBeforeClass() throws Exception {

         }

 

         @AfterClass

         public static void tearDownAfterClass() throws Exception {

         }

 

         @Test

         public void testAdd() {

                   JDemo a= new JDemo();

                   assertEquals(6,a.add(3, 3));

         }

 

}
修改完成后,即得到以下显示(注意左边的结构框架:)
junit 学习(1) - 流口水的小猪 - 轨迹
 
5 运行这个用例
通过点击菜单【运行】,或者右键中的Run,执行,结果如下
junit 学习(1) - 流口水的小猪 - 轨迹
上面用到了junit的断言assertEquals,且上面我们的预期和实际结果是一直的。
下面我们故意修改预期结果,测试错误的情况junit是如何处理的
junit 学习(1) - 流口水的小猪 - 轨迹
当测试失败后,还可以看到失败的原因。
 
 
 ========================================
其实到上面也就完成了,但通过网络学习,junit的测试还有一条经验

一条 JUnit 的最佳实践:单元测试代码和被测试代码使用一样的包,不同的目录。

 即我们要追求如下的效果
junit 学习(1) - 流口水的小猪 - 轨迹
 
为此,我们要修改创建junit测试用例的过程。
1.首先为project添加一个文件夹,专门用来存放测试用例
junit 学习(1) - 流口水的小猪 - 轨迹
2. 然后,在创建junit 测试用例时,注意选择用例的存放目录即可
junit 学习(1) - 流口水的小猪 - 轨迹
 next后,
junit 学习(1) - 流口水的小猪 - 轨迹
最后就形成了我们想要的效果
junit 学习(1) - 流口水的小猪 - 轨迹
其实,至于这样分开到底有什么好处,我现在还不清楚,估计后期导出导入方便吧。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值