public class CustomTestClass {
/**
* Logger.
*/
private Logger logger = Logger.getLogger("com.custom.testing");
@Test
public void simpleTestCaseOne(){
logger.warning("simpleTestCaseOne: Not yet implemented!");
assertTrue(true);
}
@Test
public void simpleTestCaseTwo(){
logger.warning("simpleTestCaseTwo: Not yet implemented!");
assertTrue(true);
}
}
现在我使用以下Ant-Code来运行测试:
<target name="Junit_Test"
depends="compile.test" description="Custom TestCase Runner">
<junit printsummary="yes" haltonfailure="no" fork="yes">
<jvmarg value="-Djava.util.logging.config.file=res/logging.properties" />
<classpath>
<path refid="tests.class.path" />
<fileset dir="${src.tests}">
<include name="**/*Test*.java"/>
</fileset>
</classpath>
<test name="com.custom.testing.CustomTestClass"
haltonfailure="no"
todir="${reports.tests}/xml"
methods="simpleTestCaseOne" >
<formatter type="xml" />
</test>
</junit>
</target>
logging.properties文件只定义 ConsoleHandler , FileHandler 以及TestClass记录器的输出文件。
当我运行ant脚本时,它实际上工作正常,但我需要重新运行几次测试并每次都更改 FileHandler 的输出文件。
是否可以为指定的Logger 添加/更改FileHandler而无需更改代码?
答案 0 :(得分:0)
我不是特别喜欢这个,但是......
您可以在属性java.util.logging.FileHandler.pattern的值中创建一个带有可替换标记的日志记录配置文件,例如
java.util.logging.FileHandler.pattern=%h/logs/@LOGFILE@.log
然后,您可以使用带有copy task的Ant filterset替换令牌,例如
<copy file="res/logging_tmp.properties" toFile="res/logging.properties" force="true">
<filterset>
<filter token="LOGFILE" value="your_value"/>
</filterset>
</copy>
您可以在每次执行单元测试之前进行复制,每次都指定不同的值。