【问题标题】:How to use JUnit with Sublime Text 3如何在 Sublime Text 3 中使用 JUnit
【发布时间】:2015-03-31 02:43:34
【问题描述】:

这是一个两部分的问题。我正在尝试将 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 中运行测试(tests/ 中的每个 .java 文件都是可由 @987654342 运行的测试类@)?我已经阅读了教程,我发现我可以从命令行运行它们(我不太确定该怎么做),或者我可以创建一个类,其 main 方法运行所有测试。如果我选择后一个选项,我会将“跑步者”课程放在哪里?我会把它放在tests/org/vulcan/geom/,还是tests/org/vulcan/,或者tests/org/?我将如何从 Sublime Text 3 运行它?

【问题讨论】:

  • 我能问一下你为什么不使用像eclipse这样的IDE吗?只是好奇,我使用 sublime (2) 但不适用于 java。
  • 我更喜欢 Sublime Text 的界面和美感。而已。我知道这是一个愚蠢的理由,所以我计划在不久的将来切换到 Eclipse,但现在我坚持使用 Sublime Text。
  • 我在 Eclipse 中使用了一个 sublime 主题,所以它是一样的,但具有 IDE 的强大功能! :)
  • @KevinPaton 我也做同样的事情!当您可以将 eclipse 的外观和感觉更改为 sublime 时,为什么还要使用 sublime 进行 java 开发?
  • @OP Javatar 项目似乎已将此标记为对其插件的增强(请参阅github.com/spywhere/Javatar/issues/19)。同时,这不能使用自定义构建系统定义来实现吗?

标签: java junit sublimetext3


【解决方案1】:

关于问题 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:

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

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2020-03-12
    • 2013-09-05
    • 1970-01-01
    • 2016-02-19
    • 2016-04-16
    相关资源
    最近更新 更多