我有一个ant任务来运行单元测试。看起来像这样
<target name="test-platform" depends="compile_tests">
<mkdir dir="${platform.test.log.dir}"/>
<junit fork="true" haltonerror="true">
<classpath refid="test.build.classpath"/>
<batchtest todir="${platform.test.log.dir}">
<formatter type="plain" usefile="true"/>
<fileset dir="${javatests}">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
我有一些看起来像这样的测试:
public class UserTest extends BaseTestClass {
private static final Logger LOGGER = Logger.getLogger(BaseTestClass.class);
@Autowired
SessionFactory sessionFactory;
@Test
@SuppressWarnings("unchecked")
public void testUser() {
List<User> users = sessionFactory
.getCurrentSession()
.createQuery("from User")
.list();
for(User user : users) {
LOGGER.info(user.getName());
Assert.assertEquals(user.getName(),String.class);
}
}
}
我创建了这个BaseTestClass以包含一个log4j配置,跟随其他几个SO帖子。
package com.example.test;
import org.apache.log4j.BasicConfigurator;
public class BaseTestClass {
static {
BasicConfigurator.configure();
}
}
但是当我运行测试时,控制台中没有任何内容。我该如何解决这个问题?
答案 0 :(得分:2)
Per:http://ant.apache.org/manual/Tasks/junit.html,尝试设置showoutput="true"
,可以使用<jvmarg value="-Dlog4j.configuration=file>
答案 1 :(得分:0)
快速启动和运行的方法:
创建一个log4j.properties文件并将其放在类路径的根目录中。
输入以下行。您使用的模式取决于您。
log4j.rootLogger = INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.conversionPattern=%d [%t] %5p %m%n
您可能需要删除BaseTestClass。
答案 2 :(得分:0)
更快的方法:
<junit showoutput="true">
<formatter type="plain" usefile="false"/>
<batchtest>
<fileset dir="${src.tests}"></fileset>
</batchtest>
usefile
属性是这里的游戏规则改变者。
来自 Apache Ant manual 的参考:
<块引用>... 输出将始终发送到文件,除非您将 usefile 属性设置为 false。