使用 assertEquals 时 JUnit 测试意外失败

Unexpected failure on JUnit test when using assertEquals

我想做一个简单的测试,使用 JUnit 的 assertEquals 方法检查我的 class Player 的名称属性。当我 运行 JUnit 测试时,我收到警告失败(AssertionFailedError:在 PlayerTest 中找不到测试),我做错了什么?

public class Player {
    private String name;
    private int id;

    public Player(int id){
        this.setId(id);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }   
}

public class PlayerTest extends TestCase {

    @Test
    public void NameTest(){
        Player player = new Player(1);
        player.setName("Roberto");
        String name = "Roberto";
        assertEquals(name, player.getName());
    }
}

我假设这是因为您编写了 Junit 3 风格的测试用例(使用 extends TestCase)而不是注释驱动的 Junit 4 风格。

这是一个 junit 4 风格的测试:

import junit.framework.TestCase;


import org.junit.Test;
import static org.junit.Assert.assertEquals;


public class PlayerTest  {

    @Test
    public void NameTest(){
        Player player = new Player(1);
        player.setName("Roberto");
        String name= "Roberto";
        assertEquals(name,player.getName());
    }

}

编辑:参见 Sunil 的回答以使其以 Junit-3 风格工作。

函数名要以"test"开头,这样TestCase才能理解为运行的测试函数。删除@Test 注释。

在这种情况下,将 NameTest() 更改为 testName()。它会起作用。