找不到符号assertEquals

Gio*_*Guy 30 java testing junit symbols class

我正在尝试为计算器编写我的第一个单元测试,但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 + "));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你们,导入它作为静态帮助.仅需要测试注释包括

import org.junit.Test;

bob*_*bel 59

assertEquals是一种静态方法.由于无法以静态方式显式导入静态方法而无法使用静态方法,因此必须使用以下任一方法:

import org.junit.Assert;
...
Assert.assertEquals(...)
Run Code Online (Sandbox Code Playgroud)

要么:

import static org.junit.Assert.assertEquals;
...
assertEquals(...)
Run Code Online (Sandbox Code Playgroud)

因为@Test它有点不同.@Test是一个注释,你可以看到@.注释像类一样导入.

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

import org.junit.Test;
Run Code Online (Sandbox Code Playgroud)

通常避免在导入上使用通配符import org.junit.*.出于原因,请参阅为什么使用带有Java import语句的通配符不好?.


isa*_*pir 6

JUnit 5 木星

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

因此,您必须添加以下内容static import

import static org.junit.jupiter.api.Assertions.*;
Run Code Online (Sandbox Code Playgroud)

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


Aks*_*ain 5

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

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

所以我改变了
assertEquals("addb", string);

Assert.assertEquals("addb", string);

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

  • 如果您没有直接在`assertEquals`方法上使用** static **导入,那么没有类`Assert`就不能在代码中使用它,请参阅我的回答! (2认同)

Ali*_*oor 5

我遇到了同样的问题,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.jarapp\lib并构建项目,然后像这样导入

import org.junit.Assert;
Run Code Online (Sandbox Code Playgroud)

junit-4.12.jar你可以从这里下载