研究了好多天终于把MacOS下的JUnit在终端中的配置搞定了,在整个过程中也学到不少东西,所以整理出来,方便其他朋友。
系统版本:MacOS X 10.8.2
JUnit版本:4.10
首先给出配置成功的检验方法,在终端中输入以下命令java org.junit.runner.JUnitCore
得到以下结果:
输入java org.junit.runner.JUnitCore org.junit.tests.AllTests
得到以下结果:
如果两次都能得到上面的结果,那么你的JUnit的配置是正确的。如果不能,请往下看。走你!
JUnit下载及准备
首先给出JUnit4.10的下载地址
注意我给出的是zip版本,里面包含了样例测试,文档等内容,如果只下载jar版本的话,之前的测试结果也就不一定有效了。
下载下来后,解压缩,会得到一个junit4.10
的文件夹,然后将这个文件夹(注意,整个文件夹)移动到/usr/share/java/
下面。
然后我们来做两步额外动作,做完之后,我再来解释为什么这么做:
建立符号链接
打开终端,键入以下命令(如果提示输入密码,就输入系统的密码就好)
|
|
这两个命令的意思是后者成为前者的符号连接。类似于windows下面的快捷方式,也就是说,以后我访问/usr/share/junit的时候就是访问了/usr/share/java/junit4.10 这样做的目的很简单,定义一些快捷方式,使得在目录与版本没关系。例如某天junit出现了5.0版本,我们就可以简单的将这两个符号链接的指向更改到新的版本,就可以直接使用新的junit了。MacOS系统内也大量使用了这样的机制,例如不同版本的JDK。
这一步完成后,需要将junit的相关文件加入CLASSPATH
环境变量。CLASSPATH
的作用,就是在我们执行java XXXX的时候,系统会自动去CLASSPATH
里寻找需要的依赖包或者目标包。 举个简单的例子,我们自己写JAVA的时候,会用到import java.util.XXX
, 为什么我们执行我们写的java文件时,系统就会知道去哪里找java.util.XXX
呢?就是因为java.util.XXX
所在的目录已经包含在CLASSPATH
这个环境变量里了。所以,现在我们要想执行java org.junit.runner.JUnitCore org.junit.tests.AllTests
, 就需要将org.junit.runner.JUnitCore
, org.junit.tests.AllTests
所在的目录加入CLASSPATH目录。
JUnit文件结构
下面来说一下JUnit的结构,打开你下载的JUnit的文件夹,你会发现里面有很多东西,重点来说两个
- junit-4.10.jar 包含了JUnit的核心类,用来运行Junit测试。也就是说是JUnit的核心
- org文件夹 这里面放了一些样例测试,用来测试JUnit是否能正常运转。
而我们之前提到的org.junit.runner.JUnitCore
就在前者中, org.junit.tests.AllTests
在后者中,所以,我们需要将 /usr/share/junit
和/usr/share/java/junit.jar
加入CLASSPATH
变量。
下面讲如何设置环境变量:
先给出代码:
|
|
这代码的含义应该不用解释了吧。
对于Mac系统,有很多个地方可以设置环境变量
- 1.修改/etc/bashrc文件
- 2.修改/etc/profile文件
- 3.修改~/.bash_profile文件(~代表当前用户的根目录)
- 4….
将代码复制粘贴到以上任意一个文件里都可以设置环境变量。但其实是有区别的,1,2两种方法将会对系统全局产生影响,也就是说,所有的用户都会有影响,而3只会对当前用户产生影响,所以我比较推荐第三种,也比较安全。
修改文件的方式如下:
- 打开终端,敲入命令
vim ~/.bash_profile
- 然后按一下键盘上的
i
,下面会变成Insert,现在你就可以修改这个文件了,修改完成后,按下ESC,然后shift
+:
,输入wq
,然后回车,OK,搞定,大功完成(这一步别问我为什么,想了解的可以自己google搜vim)。
提示:网上有些地方说把Junit放进/Library/Java/Extensions
或者/System/Library/Java/Extensions
的方法不可用,因为这样的话只有junit.jar会被加载,而测试类就不会被加载了。