关于Junit4测试没反应

时间:2020-12-30 02:39:44
现在做SSH整合的时候,在hibernate和spring整合过程中,用junit4测试,右键点击后run as->junit test,然后控制台无输出,求大家帮忙解决啊
下面是测试类的代码:

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());

}

#3


不知道你所说的控制台无输出是什么情况!

不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方

#4


等答案,學習中,哈哈

#5


引用 2 楼 jianggl88 的回复:
spring有配套的 spring-test 包 spring 2.5开始就有了 

相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

@ContextConfiguration(locations = {"classpath……

protected final Logger log = LoggerFactory.getLogger(getClass());
请问下这句日志会在哪里显示啊?这句我不懂啊,呵呵

#6


引用 3 楼 jianggl88 的回复:
不知道你所说的控制台无输出是什么情况!

不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方

我用了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,连错误都不报啊

#13


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以
我说的貌似不对!

#14


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以

恩,是啊,junit4不用继承的,呵呵,貌似就在上面@Test就行了,可以我点了没有反应,愁啊。

#15


关于Junit4测试没反应
这个是截图哦,大家帮忙看下啊

#16


Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样

#17


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以

junit4 不用继承吧....

#18


引用 16 楼 wtsolidsnake 的回复:
Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样

我是32位的啊,呵呵,不知道为什么不行了,以前一直都可以的

#19


为什么没有assertEquals之类的方法?

#20


引用 2 楼 jianggl88 的回复:
spring有配套的 spring-test 包 spring 2.5开始就有了

相对于junit4  可以 extend  org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

@ContextConfiguration(locations = {"classpa……

单元测试类要继承AbstractTransactionalJUnit4SpringContextTests Spring集成Junit进行测试

#21


百度搜索了半天,弄来弄去还是这个问题没解决啊,我也遇到和楼主一样的问题

#22


我也是遇到同样问题。在xp操作系统下就没问题。但是换成win7就不行。不知道什么原因

#23


今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!

#24


请问有答案了么?我用juno 版的eclipse也有这问题

#25


谁知道怎么解决啊。我也遇到了 关于Junit4测试没反应

#26


用main方法调用测试方法吧,我也出现这样的问题

#27


引用 23 楼 zzg16 的回复:
今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!


正解!
我也遇到这个问题了,将测试方法更名为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());

}

#3


不知道你所说的控制台无输出是什么情况!

不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方

#4


等答案,學習中,哈哈

#5


引用 2 楼 jianggl88 的回复:
spring有配套的 spring-test 包 spring 2.5开始就有了 

相对于junit4 可以 extend org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

@ContextConfiguration(locations = {"classpath……

protected final Logger log = LoggerFactory.getLogger(getClass());
请问下这句日志会在哪里显示啊?这句我不懂啊,呵呵

#6


引用 3 楼 jianggl88 的回复:
不知道你所说的控制台无输出是什么情况!

不管控制台有无输出,IDE环境中 JUnit面版是会有相应输出的;
如果JUnit正确(绿色) 控制台无输出的话可能是日志输出控制有问题;
就你当前的测试类来说 没有任何地方有println 的地方

我用了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,连错误都不报啊

#13


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以
我说的貌似不对!

#14


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以

恩,是啊,junit4不用继承的,呵呵,貌似就在上面@Test就行了,可以我点了没有反应,愁啊。

#15


关于Junit4测试没反应
这个是截图哦,大家帮忙看下啊

#16


Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样

#17


引用 11 楼 zhangyanling871218 的回复:
你被测试的类根本就没有体现哪里用JUnit了,JUnit测试类必须继承自TestCase,即extends TestCase,这样右键选run as->junit test才可以

junit4 不用继承吧....

#18


引用 16 楼 wtsolidsnake 的回复:
Me也遇到了,会不会是64位系统时的BUG呢,楼主运行环境怎样

我是32位的啊,呵呵,不知道为什么不行了,以前一直都可以的

#19


为什么没有assertEquals之类的方法?

#20


引用 2 楼 jianggl88 的回复:
spring有配套的 spring-test 包 spring 2.5开始就有了

相对于junit4  可以 extend  org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

@ContextConfiguration(locations = {"classpa……

单元测试类要继承AbstractTransactionalJUnit4SpringContextTests Spring集成Junit进行测试

#21


百度搜索了半天,弄来弄去还是这个问题没解决啊,我也遇到和楼主一样的问题

#22


我也是遇到同样问题。在xp操作系统下就没问题。但是换成win7就不行。不知道什么原因

#23


今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!

#24


请问有答案了么?我用juno 版的eclipse也有这问题

#25


谁知道怎么解决啊。我也遇到了 关于Junit4测试没反应

#26


用main方法调用测试方法吧,我也出现这样的问题

#27


引用 23 楼 zzg16 的回复:
今天我也遇到 了这个问题。我用的是spring-test 和junit 测试查了下,突然看到一句说是用了spring-test的话就可以不用@test 但是方法名必须以test开头。希望对你有帮助!


正解!
我也遇到这个问题了,将测试方法更名为testXXX即可,以前看Junit4说明时也有提到,突然想起来了。