当前位置: 首页 > 知识库问答 >
问题:

TeamCity-使用JUnit进行测试

郎祯
2023-03-14
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)); 
                ^

共有1个答案

颛孙哲
2023-03-14

所以我从Jetbrains tech得到了支持,出于完整性和省去别人麻烦的考虑,我收到了以下回复:

问题似乎是junit.jar没有放在项目的版本控制中。为了在TeamCity代理上构建项目,理想情况下项目应该是自包含的。在您的例子中,junit.jar只存在于您的本地机器上,我想在所需位置的代理上没有这样的文件。因此实际上有两个选项:将junit.jar置于版本控制下放到项目中,或者在IDEA中定义全局库,并在IDEA项目运行程序页面上配置这个全局库(必须启动检查/重新解析),然后将库文件放到将执行构建的所有代理上。我个人认为第一种方式要简单得多,效果也要好得多。

我将junit添加到版本控制中,现在构建可以在TeamCity中正常工作。

 类似资料:
  • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

  • 我正在使用Jenkins CI构建我的iOS项目。对于这个任务,我使用sh脚本通过运行xcodebuild直接从git repo构建二进制文件,这很好。目前,我使用eclipse中的appium运行JUnit测试来测试我的应用程序,但我也想将它们集成到Jenkins中。我找到了一些使用ant脚本将JUnit测试集成到jenkins中的教程,但我没有使用ant来构建我的项目。没有ant脚本,我如何将

  • 问题内容: 也许我的问题是新手,但是我真的无法理解在什么情况下使用junit? 无论是编写简单的应用程序还是大型应用程序,我都使用语句对其进行测试,这对我来说很容易。 如果仍然需要调用相同的方法,检查它们返回的内容,然后又要为所有内容添加注释,那么为什么要使用JUnit创建测试类,在项目中创建不必要的文件夹呢? 为什么不编写一个类并立即对其进行测试而不创建Test-class? PS。我从未在刚刚

  • 我现在开始使用JUnit5和Spring Boot的测试。我有一个包含控制器、服务和存储库的Rest API,以及一些使用从我的获取属性的utils类。我没有使用Spring中的“profiles”,只是使用默认配置。 我的应用程序主: 我的项目的体系结构是: 我在主测试类中尝试了“@TestPropertySource”和/或“@ActiveProfiles(”Test“)”,但没有成功。还尝试

  • 从2.0.6开始使用spring boot starter test会带来JUnit 4依赖性。如何使用spring boot starter test(通过Gradle),但使用JUnit 5,而不引入JUnit 4依赖项? 如果有帮助,这是Gradle的部分依赖输出: 这是我的身材。gradle文件: 添加JUnit 5依赖项并执行注释中提到的排除就完成了。测试依赖项现在如下所示: