如何在Ant测试任务期间登录到控制台

时间:2014-04-09 23:32:08

标签: java ant log4j

我有一个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();
    }
}

但是当我运行测试时,控制台中没有任何内容。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

Per:http://ant.apache.org/manual/Tasks/junit.html,尝试设置showoutput="true",可以使用<jvmarg value="-Dlog4j.configuration=file>

明确传递log4j引用

答案 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。