2014-03-02 89 views
0

我的測試經驗主要是Ruby的Rspec。最近我嘗試編寫一個Java jUnit測試。這裏是一個例子。然後我開始懷疑這個測試是否是必要的。由於properties()將返回Propertiesnull - 基於方法簽名。所以如果我想測試這個方法,我所要做的就是測試返回值是否爲空。這是甚至必要的測試嗎?

public class HelperTest { 
@Test 
public void testProperties() { 
     assertThat(Helper.properties(), instanceOf(Properties.class)); 
    } 
} 


public class Helper { 
    public static Properties properties() { 
      // ... some code to init properties ... 
      return properties; 
    } 
} 
+1

'assertNotNull(...)'有問題嗎? – Bohemian

+0

...或'assertThat(Helper.properties())。isNotNull()'? – fge

+1

一個永不失敗的測試,只會給人一種虛假的安全感。 –

回答

0

謝謝大家的意見。讓我試着根據評論回答我的問題。

這是新的考驗:

public void testProperties() { 
    assertThat(Helper.properties(), is(notNullValue())); 
} 

我就簡單測試,以確保該方法不會返回空值。如果該方法返回一個非空值,它將是一個屬性的實例。這意味着沒有必要測試該方法是否返回屬性的實例。

+0

但你說它也可以返回null,這取決於簽名。按照定義,它肯定會返回一個屬性,如果它返回一個非null值 - 它必須。 –

+0

但是你說它也可以返回null,這取決於簽名。按照定義,它肯定會返回一個屬性,如果它返回一個非null值 - 它必須。 –

+0

Hey @DaveNewton 1)由於斷言期望方法返回一個非空值2)並且簽名顯式期望返回一個屬性。這意味着一個非空值將肯定是一個屬性。我可以說,測試該方法返回一個非空值是足夠的,因爲非空值肯定是一個屬性。感謝您對此有更多意見! – tommi