下面是测试类的代码:
package com.ssh.service.impl;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ssh.bean.User;
import com.ssh.service.UserService;
public class UserServiceImplTest {
public static UserService service;
@BeforeClass
public void setUpBeforeClass(){
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
service = (UserServiceImpl)context.getBean("userServiceImpl");
}
@Test
public void testSave(){
User u = new User();
u.setName("zhangsan");
u.setPassword("123");
service.addUser(u);
}
}
userServiceImpl代码如下:
package com.ssh.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.ssh.bean.User;
import com.ssh.service.UserService;
@Service
@Transactional
public class UserServiceImpl implements UserService {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
@Resource
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Transactional(propagation=Propagation.SUPPORTS)
public void addUser(User user) {
getSessionFactory().getCurrentSession().persist(user);
}
public void delete(String name) {
getSessionFactory().getCurrentSession()
.createQuery("delete User u where u.name=:name")
.setString("name", name)
.executeUpdate();
}
public User find(String name) {
User user =(User)getSessionFactory().getCurrentSession().load(User.class,name);
return user;
}
public List<User> list() {
return getSessionFactory().getCurrentSession().createQuery("from User").list();
}
public void update(User user) {
getSessionFactory().getCurrentSession()
.createQuery("update User u set u.name=:newName,u.password=:newPassword")
.setString("newName", user.getName())
.setString("newPassword", user.getPassword())
.executeUpdate();
}
}
spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.ssh.service"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssh1"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedPackages">
<list>
<value>com.ssh.bean</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="show_sql">true</prop>
<prop key="format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFacotry" ref="sessionFactory"/>
</bean>
</beans>
junit4的包也加了,就是没反应啊,求教
27 个解决方案
#1
没人回答哦,。。
#2
spring有配套的 spring-test 包 spring 2.5开始就有了
相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
@ContextConfiguration(locations = {"classpath:/applicationContext-dao.xml" })
public class BaseDaoTestCase extends
AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private SessionFactory sessionFactory;
protected final Logger log = LoggerFactory.getLogger(getClass());
}
相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
@ContextConfiguration(locations = {"classpath:/applicationContext-dao.xml" })
public class BaseDaoTestCase extends
AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private SessionFactory sessionFactory;
protected final Logger log = LoggerFactory.getLogger(getClass());
}
#3
不知道你所说的控制台无输出是什么情况!
不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方
不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方
#4
等答案,學習中,哈哈
#5
protected final Logger log = LoggerFactory.getLogger(getClass());
请问下这句日志会在哪里显示啊?这句我不懂啊,呵呵
#6
我用了Log4j,控制台正常会显示建表语句的,但是我运行测试方法,Junit连红条都没有的,就是没运行的状态显示
#7
而且一运行测试,junit上面就显示terminated,我用的MyEclipse8.5
#8
选中方法,再右键!
#9
难道不报错?
#10
能截个图么?你的那句log是得到log对象。。。。
#11
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以
#12
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244.html][/img]
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244-goto-down.html][/img]
上面就显示terminated,连错误都不报啊
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244-goto-down.html][/img]
上面就显示terminated,连错误都不报啊
#13
我说的貌似不对!
#14
恩,是啊,junit4不用继承的,呵呵,貌似就在上面@Test就行了,可以我点了没有反应,愁啊。
#15
这个是截图哦,大家帮忙看下啊
#16
Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样
#17
junit4 不用继承吧....
#18
我是32位的啊,呵呵,不知道为什么不行了,以前一直都可以的
#19
为什么没有assertEquals之类的方法?
#20
单元测试类要继承AbstractTransactionalJUnit4SpringContextTests Spring集成Junit进行测试
#21
百度搜索了半天,弄来弄去还是这个问题没解决啊,我也遇到和楼主一样的问题
#22
我也是遇到同样问题。在xp操作系统下就没问题。但是换成win7就不行。不知道什么原因
#23
今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!
#24
请问有答案了么?我用juno 版的eclipse也有这问题
#25
谁知道怎么解决啊。我也遇到了
#26
用main方法调用测试方法吧,我也出现这样的问题
#27
正解!
我也遇到这个问题了,将测试方法更名为testXXX即可,以前看Junit4说明时也有提到,突然想起来了。
#1
没人回答哦,。。
#2
spring有配套的 spring-test 包 spring 2.5开始就有了
相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
@ContextConfiguration(locations = {"classpath:/applicationContext-dao.xml" })
public class BaseDaoTestCase extends
AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private SessionFactory sessionFactory;
protected final Logger log = LoggerFactory.getLogger(getClass());
}
相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
@ContextConfiguration(locations = {"classpath:/applicationContext-dao.xml" })
public class BaseDaoTestCase extends
AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private SessionFactory sessionFactory;
protected final Logger log = LoggerFactory.getLogger(getClass());
}
#3
不知道你所说的控制台无输出是什么情况!
不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方
不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方
#4
等答案,學習中,哈哈
#5
protected final Logger log = LoggerFactory.getLogger(getClass());
请问下这句日志会在哪里显示啊?这句我不懂啊,呵呵
#6
我用了Log4j,控制台正常会显示建表语句的,但是我运行测试方法,Junit连红条都没有的,就是没运行的状态显示
#7
而且一运行测试,junit上面就显示terminated,我用的MyEclipse8.5
#8
选中方法,再右键!
#9
难道不报错?
#10
能截个图么?你的那句log是得到log对象。。。。
#11
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以
#12
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244.html][/img]
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244-goto-down.html][/img]
上面就显示terminated,连错误都不报啊
[img=http://hi.csdn.net/space-3967939-do-album-picid-932244-goto-down.html][/img]
上面就显示terminated,连错误都不报啊
#13
我说的貌似不对!
#14
恩,是啊,junit4不用继承的,呵呵,貌似就在上面@Test就行了,可以我点了没有反应,愁啊。
#15
这个是截图哦,大家帮忙看下啊
#16
Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样
#17
junit4 不用继承吧....
#18
我是32位的啊,呵呵,不知道为什么不行了,以前一直都可以的
#19
为什么没有assertEquals之类的方法?
#20
单元测试类要继承AbstractTransactionalJUnit4SpringContextTests Spring集成Junit进行测试
#21
百度搜索了半天,弄来弄去还是这个问题没解决啊,我也遇到和楼主一样的问题
#22
我也是遇到同样问题。在xp操作系统下就没问题。但是换成win7就不行。不知道什么原因
#23
今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!
#24
请问有答案了么?我用juno 版的eclipse也有这问题
#25
谁知道怎么解决啊。我也遇到了
#26
用main方法调用测试方法吧,我也出现这样的问题
#27
正解!
我也遇到这个问题了,将测试方法更名为testXXX即可,以前看Junit4说明时也有提到,突然想起来了。