安装环境

  • 操作系统 - CentOS 7
  • 主机名 - junit-01.example.com
  • IP 地址 - 192.168.1.131/24

创建一个 Java 项目:

创建一个目录结构来存储 Java 源文件和构建文件。

[root@junit-01 ~]# mkdir -p ~/myMathApp/{src/myMathApp,build/classes,build/jar}

现在,编写一些 Java 代码。

[root@junit-01 ~]# vi ~/myMathApp/src/myMathApp/Calculate.java

我们编写了一个Calculate 类,它执行一些基本的算术运算。
Java代码如下:

package myMathApp;
public class Calculate {
        public int sum(int num1, int num2)
        {
                return num1 + num2;
        }
        public int average(int num1, int num2, int num3)
        {
                return (num1 + num2 + num3)/3;
        }
}

创建一个 Apache Ant build.xml 文件以使用 ant 命令编译和运行此代码。

[root@junit-01 myMathApp]# vi ~/myMathApp/build.xml

我们使用的 build.xml 脚本与我们在上一篇文章中使用的相同。

<project default="run">
    <target name="clean">
        <delete dir="build" />
    </target>
    <target name="compile" depends="clean">
        <mkdir dir="build/classes" />
        <javac srcdir="src" 
    destdir="build/classes" 
    includeantruntime="yes" />
    </target>
    <target name="jar" depends="compile">
        <mkdir dir="build/jar" />
        <jar destfile="build/jar/myMathApp.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="myMathApp.Calculate" />
            </manifest>
        </jar>
    </target>
    <target name="run" depends="jar">
        <java jar="build/jar/myMathApp.jar" fork="true" />
    </target>
</project>

我们根据我们的项目调整了 build.xml 文件中的一些参数。

[root@junit-01 ~]# cd ~/myMathApp/
[root@junit-01 myMathApp]# ant
Buildfile: /root/myMathApp/build.xml
clean:
   [delete] Deleting directory /root/myMathApp/build
compile:
    [mkdir] Created dir: /root/myMathApp/build/classes
    [javac] Compiling 1 source file to /root/myMathApp/build/classes
jar:
    [mkdir] Created dir: /root/myMathApp/build/jar
      [jar] Building jar: /root/myMathApp/build/jar/myMathApp.jar
run:
     [java] Error: Main method not found in class myMathApp.Calculate, please define the main method as:
     [java]    public static void main(String[] args)
     [java] or a JavaFX application class must extend javafx.application.Application
     [java] Java Result: 1
BUILD SUCCESSFUL
Total time: 1 second

这里 run target 抛出错误,因为我们的 Java 类缺少主程序。
无需担心,我们已经知道了,因此,只需忽略此错误即可。

我们的 Java 项目在此处使用 Apache Ant 成功编译和构建。

现在,编写另一个 Java 类来执行计算类的单元测试。

[root@junit-01 myMathApp]# vi ~/myMathApp/src/myMathApp/CalculateTest.java

我们编写了另一个类CalculateTest 来测试Calculate 类,如下所示:

package myMathApp;
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculateTest {
        Calculate Calculator = new Calculate();
        @Test
        public void testSum() {
                int sum = Calculator.sum(2,5);
                int testsum = 7;
                assertEquals(sum, testsum);
        }
        @Test
        public void testaverage() {
                int average = Calculator.average(9, 18, 27);
                int testaverage = 18;
                assertEquals(average, testaverage);
        }
}

将junit 类库复制到项目的lib 目录中。

[root@junit-01 myMathApp]# mkdir ~/myMathApp/lib
[root@junit-01 myMathApp]# cp /usr/share/java/junit* lib/
[root@junit-01 myMathApp]# cp /usr/share/java/ant/ant-junit* lib/

编辑 build.xml 文件以包含 lib 目录以编译目标。

<project default="run">
    <target name="clean">
        <delete dir="build" />
    </target>
    <path id="classpath">
        <fileset dir="lib" includes="**/.jar" />
    </path>
    <target name="compile" depends="clean">
        <mkdir dir="build/classes" />
        <javac srcdir="src" 
    destdir="build/classes" 
                  classpathref="classpath" 
                  includeantruntime="yes" />
    </target>
    <target name="jar" depends="compile">
        <mkdir dir="build/jar" />
        <jar destfile="build/jar/myMathApp.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="myMathApp.Calculate" />
            </manifest>
        </jar>
    </target>
    <target name="run" depends="jar">
        <java jar="build/jar/myMathApp.jar" fork="true" />
    </target>
</project>

再次运行 ant 命令。

[root@junit-01 myMathApp]# ant
Buildfile: /root/myMathApp/build.xml
clean:
   [delete] Deleting directory /root/myMathApp/build
compile:
    [mkdir] Created dir: /root/myMathApp/build/classes
    [javac] Compiling 2 source files to /root/myMathApp/build/classes
jar:
    [mkdir] Created dir: /root/myMathApp/build/jar
      [jar] Building jar: /root/myMathApp/build/jar/myMathApp.jar
run:
     [java] Error: Main method not found in class myMathApp.Calculate, please define the main method as:
     [java]    public static void main(String[] args)
     [java] or a JavaFX application class must extend javafx.application.Application
     [java] Java Result: 1
BUILD SUCCESSFUL
Total time: 1 second

在 build.xml 文件中包含测试目标以使用 JUnit 执行单元测试。

<project default="run">
    <target name="clean">
        <delete dir="build" />
    </target>
    <path id="classpath">
        <fileset dir="lib" includes="**/.jar" />
    </path>
    <target name="compile" depends="clean">
        <mkdir dir="build/classes" />
        <javac srcdir="src" 
    destdir="build/classes" 
    classpathref="classpath" 
    includeantruntime="yes" />
    </target>
    <target name="test" depends="jar">
        <junit printsummary="yes">
                <classpath>
                        <path refid="classpath" />
                        <path location="build/jar/myMathApp.jar" />
                </classpath>
                <batchtest fork="yes">
                        <fileset dir="src" includes="**/*Test.java" />
                </batchtest>
        </junit>
    </target>
    <target name="jar" depends="compile">
        <mkdir dir="build/jar" />
        <jar destfile="build/jar/myMathApp.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="myMathApp.Calculate" />
            </manifest>
        </jar>
    </target>
    <target name="run" depends="jar">
        <java jar="build/jar/myMathApp.jar" fork="true" />
    </target>
</project>

为测试目标运行 Ant 作业。

[root@junit-01 myMathApp]# ant test
Buildfile: /root/myMathApp/build.xml
clean:
   [delete] Deleting directory /root/myMathApp/build
compile:
    [mkdir] Created dir: /root/myMathApp/build/classes
    [javac] Compiling 2 source files to /root/myMathApp/build/classes
jar:
    [mkdir] Created dir: /root/myMathApp/build/jar
      [jar] Building jar: /root/myMathApp/build/jar/myMathApp.jar
test:
    [junit] Running myMathApp.CalculateTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec
BUILD SUCCESSFUL
Total time: 1 second

测试目标执行两个测试,两个测试都成功。

为了测试它,在Calculate.java 类中产生一个逻辑错误。

package myMathApp;
public class Calculate {
        public int sum(int num1, int num2)
        {
                return num1 - num2;
        }
        public int average(int num1, int num2, int num3)
        {
                return (num1 + num2 + num3)/2;
        }
}

在Calculate.java 中产生一些逻辑错误后再次运行Ant 任务。

[root@junit-01 myMathApp]# ant test
Buildfile: /root/myMathApp/build.xml
clean:
   [delete] Deleting directory /root/myMathApp/build
compile:
    [mkdir] Created dir: /root/myMathApp/build/classes
    [javac] Compiling 2 source files to /root/myMathApp/build/classes
jar:
    [mkdir] Created dir: /root/myMathApp/build/jar
      [jar] Building jar: /root/myMathApp/build/jar/myMathApp.jar
test:
    [junit] Running myMathApp.CalculateTest
    [junit] Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec
    [junit] Test myMathApp.CalculateTest FAILED
BUILD SUCCESSFUL
Total time: 2 seconds

这两个测试现在都失败了。

在 CentOS 7 上安装 JUnit:

使用 yum 命令安装 JUnit 包。

[root@junit-01 ~]# yum install -y junit ant-junit

在 CentOS 7 上安装 Java 开发工具包 (JDK):

登录到 junit-01.example.com。

使用 yum 命令安装 Java 开发工具包 (JDK)。

[root@junit-01 ~]# yum install -y java-1.8.0-openjdk
在 CentOS 7 上集成JUnit 和 Apache Ant

JUnit 是 Java 编程语言的开源单元测试框架。
JUnit 在测试驱动开发中扮演着非常重要的角色。
Junit 在编译时作为 JAR 链接。
该框架位于 Junit 4 或者更高版本的 org.junit 包下。
JUnit 可以与 Apache Ant 集成以创建 Java 应用程序的部署管道。

在本文中,我们将在 CentOS 7 上安装和集成 Apache Ant 与 JUnit。

www. On IT Road .com

在 CentOS 7 上安装 Apache Ant

使用 yum 命令安装 Apache Ant。

[root@junit-01 ~]# yum install -y ant

检查 Java Development Kit (JDK) 和 Apache Ant 的安装。

[root@junit-01 ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@junit-01 ~]# ant -version
Apache Ant(TM) version 1.9.4 compiled on November 5 2018
日期:2020-09-17 00:16:31 来源:oir作者:oir