2016-05-22 56 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()。它會工作。