struts+spring+ibatis:junit4.4测试总结

控制台抛出的异常:

log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
java.lang.NoSuchMethodError: org.junit.runner.notification.RunNotifier.testAborted(Lorg/junit/runner/Description;Ljava/lang/Throwable;)V
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:155)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:59)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:52)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:50)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:97)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

对于上述信息进行如下处理

1.配置log4j.properties (注:log4j.properties的配置很重要,会在控制台打印出详细的信息,对调试及其有利)

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d %p [%c] - %m%n
log4j.rootLogger = INFO,stdout

log4j.logger.com.ibatis = DEBUG

log4j.logger.org.springframework.test.context.junit4.SpringJUnit4ClassRunner = DEBUG
2.根据控制台打印的日志,针对自己的项目做详细调试 (注:因为项目、需求不同,所以输出结果不同,故不做详细介绍)

 

个人总结(JUnit4.4):

1.对于项目中引入其它项目,调试尽可能放在Controller层。Controller层中的配置文件会引入Service层、Dao层的各个配置文件,从而会避免配置文件不全带来的错误。

2.配置log4j.properties在控制台打印详细日志

3.junit测试类,及引入配置文件:

package com.iengine.test;

import java.util.UUID;

import javax.annotation.Resource;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.iengine.base.vo.MatchCommandVO;
import com.iengine.clientcommand.service.ClientCommandService;

/**
* @description JUNIT Test
* @author BrinPage
* @date 2012-08-23
*/
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback =false)
@ContextConfiguration(
  locations={"classpath:conf/spring/spring-ibatis.xml",
  "classpath:conf/spring/spring-aspect-datasource.xml",
  "classpath:conf/spring/spring-yuyincloud-dao.xml",
  "classpath:conf/spring/spring-yuyicloud-service.xml"}
)
public class ClientCommandServiceTest extends AbstractTransactionalJUnit4SpringContextTests {

  @Resource
  private ClientCommandService clientCommandService;
  /* (non-Javadoc)
  * @see junit.framework.TestCase#setUp()
  */
  @Before
  public void setUp() throws Exception {
  }

  @After
  public void tearDown() throws Exception {
  }

  /**
  * Test method for {@link com.iengine.clientcommand.service.ClientCommandService#insertCommand(com.iengine.base.vo.MatchCommandVO)}.
  */
  @Test
  public void testInsertCommand() {
    MatchCommandVO vo = new MatchCommandVO();
    UUID uuid = UUID.randomUUID();
    vo.setId(uuid.toString());
    vo.setCommand("command0");
    vo.setCommandName("命令0");
    vo.setCommandUrl("www.google.com");
    vo.setCommandStyle("0");
    vo.setAudit("0");
    vo.setState("1");
    vo.setFlag("1");
    vo.setAppId("20f41bf8-b6fe-4ae5-99bc-56344f21de66");
    try {
      clientCommandService.insertCommand(vo);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
  * Test method for {@link com.iengine.clientcommand.service.ClientCommandService#insertAppCommand(com.iengine.base.vo.MatchCommandVO)}.
  */
  @Test
  public void testInsertAppCommand() {
  }

}

posted @ 2012-08-23 20:58  Brin Page  阅读(3569)  评论(0编辑  收藏  举报