how2j.cn

步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : 效果   
步骤 4 : jar   
步骤 5 : 导入到当前项目中   
步骤 6 : TestSpring   

步骤 1 :

先运行,看到效果,再学习

老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
步骤 2 :

模仿和排错

在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程
步骤 3 :

效果

效果
步骤 4 :

jar

注解方式用到了junit,所以需要在右上角下载:
junit-4.12.jar和hamcrest-all-1.3.jar
步骤 5 :

导入到当前项目中

把jar包导入到项目中,导包办法:右键 project->properties->java build path->libaries->add external jars
导入到当前项目中
步骤 6 :

TestSpring

修改TestSpring, 并运行
1. @RunWith(SpringJUnit4ClassRunner.class)
表示这是一个Spring的测试类

2. @ContextConfiguration("classpath:applicationContext.xml")
定位Spring的配置文件

3. @Autowired
给这个测试类装配Category对象

4. @Test
测试逻辑,打印c对象的名称
TestSpring
package com.how2java.test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.how2java.pojo.Category; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class TestSpring { @Autowired Category c; @Test public void test(){ System.out.println(c.getName()); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-06-21 成了
会疼
成了,哈哈








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-06-21 注解部分报错
qq886123



注解里的内容报错,这个是怎么回事啊?两个需要导进去的包,我都导进去了
@RunWith(SpringJUnit4ClassRunner.class)
java.lang.TypeNotPresentException: Type SpringJUnit4ClassRunner not present
	at sun.reflect.annotation.TypeNotPresentExceptionProxy.generateException(Unknown Source)
	at sun.reflect.annotation.AnnotationInvocationHandler.invoke(Unknown Source)
	at com.sun.proxy.$Proxy2.value(Unknown Source)
	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: SpringJUnit4ClassRunner
	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 java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseSig(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseClassValue(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseMemberValue(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseAnnotation2(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations(Unknown Source)
	at java.lang.Class.createAnnotationData(Unknown Source)
	at java.lang.Class.annotationData(Unknown Source)
	at java.lang.Class.getAnnotation(Unknown Source)
	at org.junit.internal.builders.IgnoredBuilder.runnerForClass(IgnoredBuilder.java:10)
	... 11 more



1 个答案

qq886123 答案时间:2018-06-21
解决了,导包问题




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-06-13 jar包版本低
2018-03-29 请问下这个testSpring的意义是啥呢?貌似我把test方法换成main方法也有一样的效果。。。
2018-03-22 站长,提醒一下这里要Run As 选择JUnit Test
2018-03-02 我在哪里才能查到依赖的类库呢?
2018-01-02 注解方式貌似没有
2017-12-21 获取不到 Category里面的getName
2017-10-30 站长,我这块报错了,报错的是什么呢?没有看懂这块。
2017-10-23 这一节测试的内容有什么用呢
2017-09-05 被自己坑了一下。。。
2017-08-13 老师,有个疑问哈,好奇本节加了@ContextConfiguration("classpath:applicationContext.xml")
2017-07-01 这一节的就是告诉我们可以用TestSpring这种测试类替换TestSpringOldWay这个类吗?
2017-05-13 好像少了一步,修改applicationContext.xml文件




提问之前请登陆
关于 JAVA 框架-Spring-注解方式测试 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图