【问题标题】:Cannot find symbol assertEquals找不到符号 assertEquals
【发布时间】:2014-01-05 01:34:35
【问题描述】:

我正在尝试为计算器编写我的第一个单元测试,但 NetBeans 说它找不到符号 assertEquals 和注释 @Test
我应该包括一些东西吗?
我正在使用 NetBeans 7.3.1 和 W7。

package calculator;

import org.junit.Assert.*;

public class UnitTests{

    @Test
    public void checkAdd(){
        assertEquals(2, Calculator.rpnCalc(" 2 3 + "));
    }
}

编辑:谢谢大家,将它作为静态导入有帮助。 测试注释只需要包括

导入 org.junit.Test;

【问题讨论】:

    标签: java class testing junit symbols


    【解决方案1】:

    assertEquals 是一个静态方法。由于您不能使用静态方法而不以静态方式显式导入它们,因此您必须使用:

    import org.junit.Assert;
    ...
    Assert.assertEquals(...)
    

    或:

    import static org.junit.Assert.assertEquals;
    ...
    assertEquals(...)
    

    对于@Test,它有点不同。 @Test 是一个注解,您可以通过 @ 看到。注释像类一样被导入。

    所以你应该像这样导入它:

    import org.junit.Test;
    

    通常避免在 import org.junit.* 等导入中使用通配符。原因见Why is using a wild card with a Java import statement bad?

    【讨论】:

      【解决方案2】:

      JUnit 5 木星

      在 JUnit 5 中,包名称已更改,断言位于 org.junit.jupiter.api.Assertions,假设位于 org.junit.jupiter.api.Assumptions

      所以你必须添加以下static import

      import static org.junit.jupiter.api.Assertions.*;
      

      另见http://junit.org/junit5/docs/current/user-guide/#writing-tests-assertions

      【讨论】:

      • 哇,这成功了。通过 JUnit 4 静态导入,import static org.junit.Assert.assertTrue; 我能够通过 IDE 中的单元测试。但是当我运行 maven install 时,它会抱怨 Noclassdefound。我替换为import static org.junit.jupiter.api.Assertions.*;,它现在就像一个魅力。非常感谢。
      【解决方案3】:

      我正在使用 jUnit4.12 在 java 8 环境中开发 JUnit

      对我来说:编译器无法找到方法 assertEquals,即使我使用了
      import org.junit.Assert;

      所以我把
      assertEquals("addb", string);
      改成了
      Assert.assertEquals("addb", string);

      因此,如果您遇到关于 assertEqual 无法识别的问题,请将其更改为 Assert.assertEquals(,); 应该可以解决您的问题

      【讨论】:

      • 如果您没有直接在 assertEquals 方法上使用 static 导入,则不能在没有类 Assert 的代码中使用它,请参阅我的回答!
      【解决方案4】:

      我遇到了同样的问题cannot resolve symbol Assert 我已经通过添加来自不同答案的不同导入来尝试这些解决方案。

      1. 导入 org.junit.Assert;
      2. 导入静态 org.junit.Assert.*;
      3. 导入静态 org.junit.Assert.assertEquals;
      4. 导入静态 org.junit.jupiter.api.Assertions.*;
      5. 导入 org.junit.Assert;

      但发挥神奇作用的解决方案是将junit-4.12.jar 放在app\lib 目录中,然后构建项目,然后像这样导入

      import org.junit.Assert;
      

      你可以从here下载junit-4.12.jar

      【讨论】:

      • 是的@Ali你的权利我们可以通过将jar文件添加到libs文件夹来管理
      【解决方案5】:

      使用带有 start.sping.io 默认设置的 IntelliJ 2019.2.4...

      import static org.junit.jupiter.api.Assertions.assertEquals;
      

      但现在不是

      Assert.assertEquals(expected, actual);
      

      使用

      assertEquals(expected, actual);
      

      【讨论】:

        【解决方案6】:

        你必须将依赖添加到 pom.xml 文件中

        <dependency>
          <groupId>junit</groupId>          
          <artifactId>junit</artifactId>            
          <version>4.12</version>       
        </dependency>
        

        【讨论】:

        • 该问题包含 6 年前的提示,即缺少“导入静态”是实际问题,因此您的回答恐怕没有抓住重点。
        【解决方案7】:

        我的项目是基于maven的,虽然我在pom.xml中编辑了junit,但是在我的repository中还是找不到junit,所以我把junit.jar下载到我的repository。它可以用!你可以试试!

        【讨论】:

        • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
        猜你喜欢
        • 2017-05-21
        • 2021-10-14
        • 2014-04-11
        • 2013-09-12
        • 2013-06-06
        • 2017-10-01
        • 2015-05-10
        • 2022-01-17
        • 1970-01-01
        相关资源
        最近更新 更多