团队城市 - 使用JUnit进行测试

3
我正在使用Intellij Idea 12版本(旗舰版)。刚安装了Team City(版本8)。有一个默认代理在Linux上运行。
我创建了一个非常简单的测试应用程序: public class Main {
public static void main(String[] args) { System.out.println("Hello World!"); }
public int sum(int x, int y) { return x+y;
} }
和一个非常简单的测试...
import junit.framework.Assert; import org.junit.Test; public class MainTest { @Test public void testSum() throws Exception { Main test=new Main(); Assert.assertEquals("Sum should be 7",7,test.sum(4,4)); } }
如果我在IntelliJ中运行它,测试将被运行并像应该一样失败。
如果相反,我提交这个项目并将其推送到Github,TeamCity会看到更改并开始构建。构建很快失败,并显示以下错误:
/home/ctb/TeamCity/buildAgent/work/742505fa88794219/test/MainTest.java:1: package junit.framework does not exist 
import junit.framework.Assert; 
                      ^ 
/home/ctb/TeamCity/buildAgent/work/742505fa88794219/test/MainTest.java:2: package org.junit does not exist 
import org.junit.Test; 
                ^ 
/home/ctb/TeamCity/buildAgent/work/742505fa88794219/test/MainTest.java:12: cannot find symbol 
symbol  : class Test 
location: class MainTest 
    @Test 
         ^ 
/home/ctb/TeamCity/buildAgent/work/742505fa88794219/test/MainTest.java:15: cannot find symbol 
symbol  : variable Assert 
location: class MainTest 
        Assert.assertEquals("Sum should be 7. Loser!!",7,test.sum(4,4)); 
                ^

我看到TeamCity没有找到JUnit。

在TeamCity讨论论坛上,有一个回复我的问题, 问我是否将junit.jar作为构建的依赖项(模块或库)添加。它被列为模块依赖项,但是出于好奇,我尝试将其作为库依赖项。我还尝试检查和取消选中导出并尝试编译和测试范围,但每次都会出现相同的错误。我的运行配置是共享的。
我没有使用Ant或Maven。也许有一天,但我想尽可能简单地开始。
显然,我错过了什么,但是关于这个主题的文档很少。
谢谢。
1个回答

3
我听说Jetbrains技术支持已经回复了我,为了完整性和帮助其他人节省麻烦,以下是我收到的回复:
问题似乎在于junit.jar未在您的项目版本控制下。为了在TeamCity代理上构建您的项目,最好使项目自包含。在您的情况下,junit.jar仅存在于您的本地机器上,我想代理服务器上没有这个文件。因此,您有两个选择:将junit.jar放入项目版本控制中,或在IDEA中定义全局库,并在IDEA项目运行器页面上配置此全局库(必须启动Check/Reparse),之后将库文件放置在所有将执行构建的代理服务器上。个人认为,第一种方法更简单、更好。
我将junit添加到版本控制中,现在在TeamCity中构建正常工作。

1
我曾经遇到过完全相同的问题,这个方法解决了它。看起来很奇怪,因为TeamCity中有JUnit4运行器,并且在IntelliJ项目文件中声明了对JUnit的依赖。 - vidstige

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接