`

Djunit---------Ant 执行指南

阅读更多

我想大家一定会遇到这个问题的

Djunit 是很强大的软件,主要是日企使用,具体的说明请看下面的官网:

http://works.dgic.co.jp/djunit/

Ant 也是一个很强大的软件,是构建工具,现在也不比较流行。具体的在下面官网

http://ant.apache.org/

现在就给大家说明下他们的组合使用:

为什么要组合使用那。。。

我想大家要是看到这篇文章的话一定是遇到问题了。。。

现在我就写了一个简单的sample,大家看了就会明白的

主要是用到的jar包

asm-2.2.1.jar

asm-attrs-1.5.3.jar

djunit.jar

jakarta-oro-2.0.7.jar

jcoverage-djunit-1.0.5.jar

junit.jar

一下是sample代码:

 

package com.chenhailong.source;

/**
 * 
 * @author chenhailong
 * 
 */
public class Simple {

    private String name;
    private boolean sex;
    private int age;
    private String localtion;
    private String company;

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the sex
     */
    public boolean isSex() {
        return sex;
    }

    /**
     * @param sex
     *            the sex to set
     */
    public void setSex(boolean sex) {
        this.sex = sex;
    }

    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }

    /**
     * @param age
     *            the age to set
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * @return the localtion
     */
    public String getLocaltion() {
        return localtion;
    }

    /**
     * @param localtion
     *            the localtion to set
     */
    public void setLocaltion(String localtion) {
        this.localtion = localtion;
    }

    /**
     * @return the company
     */
    public String getCompany() {
        return company;
    }

    /**
     * @param company
     *            the company to set
     */
    public void setCompany(String company) {
        this.company = company;
    }

    public Simple getMember() {
        Simple simple = new Simple();
        simple.age = 10;
        simple.company = "dnc.2010";
        simple.localtion = "shenyang";
        simple.name = "zhangli";
        simple.sex = true;
        return simple;
    }

}

 

Test 代码

package com.chenhailong.test;

import jp.co.dgic.testing.framework.DJUnitTestCase;

import com.chenhailong.source.Simple;


/**
 * 
 * @author chenhailong
 *
 */
public class SimpleTest extends DJUnitTestCase{

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    public void testGetMember() {
        Simple simple = new Simple();
        simple.setAge(10);
        simple.setCompany("dnc");
        simple.setLocaltion("shanghai");
        simple.setName("chenhailong");
        simple.setSex(false);
        addReturnValue(Simple.class, "getMember", simple);
        simple = simple.getMember();
        assertEquals("dnc", simple.getCompany());
        assertEquals("shanghai", simple.getLocaltion());
        assertEquals("chenhailong", simple.getName());
        assertEquals(10, simple.getAge());
        assertEquals(false, simple.isSex());
    }

}

 build.properties

djunit.lib.dir=E:/JavaPortlet/Djunit/lib
junit.report.dir=./report/junit
coverage.report.dir=./report/coverage

 build.xml

<?xml version="1.0" encoding="Windows-31J"?>

<project name="djUnit" basedir="." default="djunit.report">

	<taskdef resource="djunittasks.properties" classpath="./lib/djunit.jar" />

	<property file="build.properties" />

	<path id="class.path">
		<fileset dir="${djunit.lib.dir}">
			<include name="**/*.jar" />
		</fileset>
	</path>
	<!--=============== compile ===============-->
	<target name="compile">
		<mkdir dir="./classes" />
		<javac srcdir="./src" destdir="./bin" debug="yes" includeantruntime="false" />
		<copy todir="./classes">
			<fileset dir="./bin">
				<include name="**/*.class"/>
			</fileset>
		</copy>
	</target>
	<!--=============== test ===============-->
	<target name="djunit.test" depends="compile">
		<delete dir="${junit.report.dir}" />
		<mkdir dir="${junit.report.dir}" />
		<djunit printsummary="yes" targetsrcdir="./src" virtualmock="yes" coverage="yes" asmversion="ASM2">
			<classpath refid="class.path" />
			<classpath path="./classes" />
			<formatter type="xml" />
			<batchtest todir="${junit.report.dir}">
				<fileset dir="./classes">
					<include name="**/*Test.class" />
				</fileset>
			</batchtest>
		</djunit>
		<junitreport>
			<fileset dir="${junit.report.dir}">
				<include name="TEST-*.xml" />
			</fileset>
			<report format="frames" todir="${junit.report.dir}" />
		</junitreport>
	</target>
	<!--=============== djUnit Coverage Report ===============-->
	<target name="djunit.report" depends="djunit.test">
		<delete dir="${coverage.report.dir}" />
		<mkdir dir="${coverage.report.dir}" />
		<djunit-coverage-report serFile="./jcoverage.ser" srcdir="./src" destdir="${coverage.report.dir}">
			<classpath refid="class.path" />
		</djunit-coverage-report>
	</target>
</project>

 执行的结果如下:

Buildfile: E:\JavaPortlet\Djunit\build.xml
compile:
djunit.test:
   [delete] Deleting directory E:\JavaPortlet\Djunit\report\junit
    [mkdir] Created dir: E:\JavaPortlet\Djunit\report\junit
   [djunit] Running com.chenhailong.test.SimpleTest
   [djunit] Running com.chenhailong.test.SimpleTest
   [djunit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.64 sec
[junitreport] Processing E:\JavaPortlet\Djunit\TESTS-TestSuites.xml to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\null1445352326
[junitreport] Loading stylesheet jar:file:/E:/eclipseTPTP/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
[junitreport] Transform time: 1047ms
[junitreport] Deleting: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\null1445352326
djunit.report:
   [delete] Deleting directory E:\JavaPortlet\Djunit\report\coverage
    [mkdir] Created dir: E:\JavaPortlet\Djunit\report\coverage
[djunit-coverage-report] djUnit coverage report
BUILD SUCCESSFUL
Total time: 4 seconds

 现在大家就尝试一下

heihei 在完善一下:

@echo off

echo batTest ant

call ant -version
 pause

<?xml version="1.0" ?>
<project basedir="." default="echo" name="chenhailong">

	<target name="echo">
		<echo message="hello chenhailong" />
	</target>
	<target name="test">
		<echo message="My cock is big" />
	</target>
</project>

 

如果有什么问题请和我联系

还有就是 如果要转载的话请注明作者和地址 谢谢

 

0
2
分享到:
评论
10 楼 chenhailong 2013-01-28  
gtf19880205 写道
谢谢啊

我发现个问题,当我的测试代码和源码都在一个工程中的时候mock是可以成功的,但是我把测试代码独立一个工程的话mock就失败了。


嗨。。。这个

测试为了什么啊,测试不就是为了测试源source吗。。。
9 楼 gtf19880205 2013-01-25  
谢谢啊

我发现个问题,当我的测试代码和源码都在一个工程中的时候mock是可以成功的,但是我把测试代码独立一个工程的话mock就失败了。
8 楼 chenhailong 2013-01-24  
好吧。我帮你查了一下官网

哈哈

我这篇文章是写于2年前,技术更新了
JCoverageを使用する際の"instrument"の代わりに、djUnitは"djUnit-instrument"を記述する。なお、オプションに"virtualmock=yes/no"があり、virtualmockの使用可否を指定出来る

说明virtualmock只有2个选择 一个yes 一个no

你在看看你设定yes看看
7 楼 gtf19880205 2013-01-24  
全了
ant-junit.jar
ant.jar
asm-2.2.1.jar
asm-attrs-1.5.3.jar
djunit.jar
jakarta-oro-2.0.7.jar
jcoverage-djunit-1.0.5.jar
junit-4.8.2.jar
6 楼 chenhailong 2013-01-24  
gtf19880205 写道
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">


jar包添加全了吗?
asm-2.2.1.jar
asm-attrs-1.5.3.jar
djunit.jar
jakarta-oro-2.0.7.jar
jcoverage-djunit-1.0.5.jar
junit.jar
5 楼 gtf19880205 2013-01-24  
classpath="./lib/djunit.jar"
chenhailong 写道
gtf19880205 写道
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">

不成功的现象能不能发过来,这样才知道问题啊,你上来就说不成功,这个我真的不知道为什么了。


现象是这样:我用eclipse跑可以mock成功,但是用ant跑的时候发现mock都没生效,导致测试用例失败。virtualmock="true" 这个参数我也确认过了,传过去了。
4 楼 chenhailong 2013-01-24  
gtf19880205 写道
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">

不成功的现象能不能发过来,这样才知道问题啊,你上来就说不成功,这个我真的不知道为什么了。
3 楼 gtf19880205 2013-01-23  
chenhailong 写道
gtf19880205 写道
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">

如果你用eclipse的djunit插件好使的话,插件你djunit的asmversion。这个非常重要。不同asmversion 会不一样的


{
asmversion ASMのバージョンを指定する ASM or ASM2 or ASM15
}

看看 指定一下默认是用ASM,你没写是用的默认值


ASM  ASM or ASM2 or ASM15 这3个值都试过了,还是不行
2 楼 chenhailong 2013-01-22  
gtf19880205 写道
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">

如果你用eclipse的djunit插件好使的话,插件你djunit的asmversion。这个非常重要。不同asmversion 会不一样的


{
asmversion ASMのバージョンを指定する ASM or ASM2 or ASM15
}

看看 指定一下默认是用ASM,你没写是用的默认值
1 楼 gtf19880205 2013-01-22  
怎么我的mock一直不成功
<djunit virtualmock="true" printsummary="yes" targetsrcdir="./src" coverage="yes">

相关推荐

Global site tag (gtag.js) - Google Analytics