2016-09-09 53 views
0

我對測試有點新穎。我有一個與春季啓動和Oracle數據庫的小應用程序。我想寫一個測試,當我的JavaBean類可以有空的ID int值。這甚至有可能測試嗎?JUnit:在創建JavaBean時測試int類型的ID是否爲空

目前我有這段代碼,但我認爲它不正確。

ReportModel reportModel = new ReportModel(); 

Validator validator = createValidator(); 
Set<ConstraintViolation<ReportModel>> constraintViolationSet = validator.validate(reportModel); 

assertThat(constraintViolationSet.size()).isEqualTo(0); 

編輯:完整的測試類:

public class ValidatorTests { 

    private Validator createValidator() { 
     LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); 
     localValidatorFactoryBean.afterPropertiesSet(); 
     return localValidatorFactoryBean; 
    } 

    @Test 
    public void shouldNotValidateWhenIdIsNull() { 
     LocaleContextHolder.setLocale(Locale.ENGLISH); 
     ReportModel reportModel = new ReportModel(); 

     Validator validator = createValidator(); 
     Set<ConstraintViolation<ReportModel>> constraintViolationSet = validator.validate(reportModel); 

     assertThat(constraintViolationSet.size()).isEqualTo(0); 
    } 
} 
+0

你能給一點點更多的環境?還有更多的測試代碼?測試連接到上下文文件和運行程序正確路徑的bean。並添加更多詳細信息現在不工作?檢查bean是否有空ID是否有問題?或者你甚至不能運行測試? – sphinks

+0

什麼不工作:測試失敗。以下答案解決了這個問題。 –

+0

太棒了,然後將其標記爲正確的答案。 – sphinks

回答

1

試試這個:

assertEquals(constraintViolationSet.size(), 0); 

,或者

assertTrue(constraintViolationSet.isEmpty()); 
+0

謝謝。奇蹟般有效! –

+0

如果這可以修復任何問題,那麼你的問題就在別的地方,因爲這個「解決方案」只是用Hamcrest代替你的AssertJ斷言,它基本上只是一樣的東西。你可以使用assertThat(constraintViolationSet).isEmpty()'將AssertJ寫成同樣的東西 - 而不冒任何NullPointer的風險。但這並不能解釋你的原始問題在哪裏。 –

+0

我原來的問題是我的測試沒有通過。現在他們通過了,但我不確定測試實體bean的參數是否爲空是正確的。但這已經是另一個問題了。 –