How to configure log4j.properties for SpringJUnit4ClassRunner?

后端 未结 7 735
深忆病人
深忆病人 2021-01-30 04:06

Suddenly this keeps happening during a JUnit test. Everything was working, I wrote some new tests and this error occured. If I revert it, it won\'t go away. Why is that?

7条回答
  •  萌比男神i
    2021-01-30 04:20

    Because I don't like to have duplicate files (log4j.properties in test and main), and I have quite many test classes, they each runwith SpringJUnit4ClassRunner class, so I have to customize it. This is what I use:

    import java.io.FileNotFoundException;
    
    import org.junit.runners.model.InitializationError;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.springframework.util.Log4jConfigurer;
    
    public class MySpringJUnit4ClassRunner extends SpringJUnit4ClassRunner {
    
        static {
            String log4jLocation = "classpath:log4j-oops.properties";
            try {
                Log4jConfigurer.initLogging(log4jLocation);
            } catch (FileNotFoundException ex) {
                System.err.println("Cannot Initialize log4j at location: " + log4jLocation);
            }
        }
    
        public MySpringJUnit4ClassRunner(Class clazz) throws InitializationError {
            super(clazz);
        }
    }
    

    When you use it, replace SpringJUnit4ClassRunner with MySpringJUnit4ClassRunner

    @RunWith(MySpringJUnit4ClassRunner.class) 
    @ContextConfiguration("classpath:conf/applicationContext.xml") 
    public class TestOrderController {
        private Logger LOG = LoggerFactory.getLogger(this.getClass());
    
        private MockMvc mockMvc;
    ...
    }
    

提交回复
热议问题