Linux下Ant Junit安装配置及完成单元测试


后天实训,Linux+vim+java+ant+Junit,真是蛋疼,有eclipse为什么要用那么原始的东西。

折腾了几天,终于在Ubuntu下从安装jdk开始到完成利用ant进行Junit单元测试。ant,Junit网上资料有点少,很多都是在eclipse下使用Junit的,手工编写ant,Junit真是有点少。下面记录下我的过程。

首先,jdk配置就不说了,网上很多资料,先说Junit, 到官网下载 junit-4.9.jar — Basic jar 不知道为什么有那么多版本,反正我下载的是这个,之前直接搜junit.jar下载,尼玛下载那个有问题,还以为是jdk1.7版本太新了,有问题,真是误人子弟。把下载的junit-4.9.jar放入你的Java_home路径下的lib文件夹里(我是直接安装的是/usr/java/jdk1.7.0),然后记得在你配置jdk是的CLASSPATH下加入,比如我的是export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/junit-4.9.jar:$CLASSPATH  尼玛为什么网上那么多资料都没说要着一步,只说了要把jar文件放入lib里,可是我就是不行,还好最后是了下加入CLASSPATH才通过。

junit-4.9.jar下载地址:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /pub/2011/08/28/Linux下Ant Junit安装配置及完成单元测试/

先开始写要主类还有测试类吧,代码如下

HelloWorld.java文件

 

        public   class   HelloWorld   {
        public String sayHello()
{
return "Hello World";

        public int getInt(){
return 5;
}
        public   static   void   main(String   args[]){  
                HelloWorld world = new HelloWorld();
System.out.println(world.sayHello());
        }  
  }

         用来测试的类:

          HelloWorldTest.java    貌似jUnit的习惯命名都是在主类后面加Test,测试方法在前面加test,不知道是不是强制的,反正这样也不错。

          import junit.framework.Test;

          import junit.framework.TestCase;

          import junit.framework.TestSuite;
          public class HelloWorldTest extends TestCase{
  
public HelloWorldTest(String name){
super(name);
}

        public static void main(String args[]){
junit.textui.TestRunner.run(HelloWorldTest.class);

        public void testSayHello(){
HelloWorld world = new HelloWorld();
assert (world != null);
assertEquals("HelloWorld",  world.sayHello() );
}


        public void testgetInt()
        {
               HelloWorld world = new HelloWorld();
               assertEquals(6,  world.getInt() );
        }
    
}

        这个时候要嵌入到ant中,首先还是确定下此时junit能否正常工作吧,把上面两个文件放同个文件夹,然后java HelloWorldTest.java 编译,运行测试的话junit跟一般Java程序一样,直接java HelloWorldTest 汗,新手 没办法,一开始真的这个也不知道,以为是junit HelloWorldTest。。。。。高手莫笑。

        运行结果不贴上来了。

        接下来是ant,还是官网下吧 http://ant.apache.org/   最新好像是1.82不知道为什么我的Ubuntu自带有ant 不过是1.81的,可能是我之前10.04的时候用apt-get install安装jdk的时候装上的,还是自己学怎么用吧,把下载的安装包解压,复制到/usr/ant下 然后 改环境变量 sudo vim /etc/profile   跟jdk差不多文件最后加上 export ANT_HOME=/usr/ant/apache-ant-1.8.2 同时把刚刚下载的junit-4.9.jar放到里面的lib文件里。

        简单点,直接写build.xml吧,我的文件目录是src 存放 .java classes存放 .class build.xml跟src在同级文件夹内

        内容如下

          <?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="compile" basedir="." >
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello.jar" />
       
         <target name="junit">
        <available property="junit.present" classname="junit.framework.TestCase" />
    </target>
       
<target name="init" depends="junit">
    <mkdir dir="${dest}"/>
</target>


<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>


<!--
        <target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
        </target>
  -->

<target name="run" depends="compile">
<java classname="HelloWorld" classpath="${dest}"/>
</target>
       
         <target name="test" depends = "compile">
          <junit printsummary="yes" >
          <formatter type="plain"/>
          <classpath path="${dest}"/>
          <test name = "HelloWorldTest"/>
</junit>
         </target>
        
</project>

        
       关于ant的xml语法,还是上网查吧。说不清楚,其中<classpath path="${dest}"/>是你要测试的class文件夹,<test name = "HelloWorldTest"/>是你要测试的文件。


        到这里总是完成了。。。。。

        运行测试可以使用ant test。。运行完会生成运行报告,我故意弄错的测试,结果如下

          Testsuite: HelloWorldTest
Tests run: 2, Failures: 2, Errors: 0, Time elapsed: 0.007 sec


Testcase: testgetInt took 0.002 sec
FAILED
expected:<6> but was:<5>
junit.framework.AssertionFailedError: expected:<6> but was:<5>
at HelloWorldTest.testgetInt(Unknown Source)


Testcase: testSayHello took 0 sec
FAILED
expected:<Hello[]World> but was:<Hello[ ]World>
junit.framework.ComparisonFailure: expected:<Hello[]World> but was:<Hello[ ]World>
at HelloWorldTest.testSayHello(Unknown Source)

相关内容