如何将JUnit与Sublime Text 3一起使用

时间:2015-01-31 20:03:27

标签: java junit sublimetext3

这是一个两部分问题。我试图将JUnit用于我在Sublime Text 3中工作的项目。我的文件设置看起来有点像这样

Vulcan/
 Vulcan.sublime-project
 bin/
  ...
 src/
  core/
   org/
    vulcan/
     geom/
      Vector.java
      ... (other similar files in the same package)
  tests/
   org/
    vulcan/
     geom/
      VectorTest.java
      ... (relevant test files to match core/org/vulcan/geom/)

Vector.javaVectorTest.java的顶部,我有一行package org.vulcan.geom。现在,在我的sublime-project文件中,我已将源文件夹设置为Vulcan/src/core/,因此当我构建它时,Vector.java被编译为bin/org/vulcan/geom/Vector.class,但这意味着什么是在构建整个项目时,tests/文件夹将被忽略,而不是构建到bin/

我尝试通过将源文件夹设置为Vulcan/src/来解决此问题,但这会导致org/vulcan/geom/中的一堆错误,说它找不到该包中的任何类名(我假设解决此问题的方法是将包从org.vulcan.geom更改为core.org.vulcan.geom,但这将是一个繁琐的过程。

问题1:那么我如何设置项目,以便在构建整个项目时tests/core/一起编译?

问题2:使用此文件结构,如何在tests/中使用JUnit.java中的每个tests/文件运行测试是JUnit)可以运行的测试类吗?我已经阅读了教程,我发现我可以从命令行运行它们(我不太确定该怎么做),或者我可以创建一个main方法运行的类所有的测试。如果我选择后一个选项,我会在哪里放置" runner"类?我会将它放在tests/org/vulcan/geom/tests/org/vulcan/tests/org/中吗?我将如何从Sublime Text 3运行它?

1 个答案:

答案 0 :(得分:2)

关于问题1:

  • 安装包控件
  • 安装Sublime Linter
  • 安装Sublime Linter javac

编辑Vulcan.sublime-project并添加以下内容

"SublimeLinter": 
{
    "linters": 
    {
        "javac": 
        {
            "args": 
            [
                "-cp",
                "/usr/share/java/junit4.jar",
                "-sourcepath",
                "${project}/src/core:${project}/src/tests"
            ]
        }
    }
}

在-cp中,您可以添加编译所需的任何.jar库。在-sourcepath中,您可以添加项目的多个源(请注意使用唯一的包名称)。两者都可以使用“:”分隔多个路径。

这两个参数实际上是javac cli参数,因此您可以查找javac手册页以获得更多功能。

如果您使用上面的设置,每次在sublime中保存.java文件时,javac都会编译它并在同一目录中创建.class文件。 Sublime linter将在侧栏装订线中显示编译错误和警告。

关于问题2:

如果你想测试vulcan里面​​的所有内容,TestRunner.java应该在tests / org / vulcan中。如果你想测试geom中的所有内容,TestRunner.java应该在tests / org / vulcan / geom中。

TestRunner.java示例 - http://www.vogella.com/tutorials/JUnit/article.html#juniteclipse_code

但是为了运行测试,您必须保存所有文件,以便在编译后运行

cd .../Vulcan/src/tests
java -cp .:/usr/share/java/junit4.jar org.vulcan.TestRunner

超出主题 - 为什么要使用sublime for java:

如果您使用较少的自动完成,自动导入,复制/粘贴 - 您学得更快,您对细节的关注会变得更好,从长远来看,您正在更快地编写正确的代码。