2016-05-22 57 views
-1

我想做一个简单的测试,使用JUnit的assertEquals方法检查我的类Player的名称属性。当我运行JUnit测试时,出现警告(AssertionFailedError:没有在PlayerTest中找到测试),我做错了什么?使用assertEquals时发生意外的JUnit测试失败

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()); 
    } 
} 
+0

**什么**警告? –

+0

TestCase导致问题。删除它并尝试添加Assert.assertEquals(name,player.getName());它应该工作。我测试了它。 –

回答

2

我想这是因为你写一个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()); 
    } 

} 

编辑:见苏尼尔的答案,使其在JUnit-3的工作作风。

0

函数名称应以TestCase的“test”开头,以了解它是要运行的测试函数。删除@Test注释。

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