2016-05-24 3 views
1

内部でLocalDateTime.now()を使用するAPIに対していくつかのテストを書く必要があります。この値でいくつかのことを行い、非常に長いString(〜1MB)を返します。LocalDateTimeを使用するAPIとの比較

apiの新しいリリースが出ても結果が同じであることを確認する回帰テストを書きたいと思います。

LocalDateTime.now()は常に異なる値を返すため、悲しいことに、テスト結果が

がハードコーディングされた値にLocalDateTime.now()の結果を修正する何らかの方法でそれが可能です(驚き、驚き...)毎回異なります。

これは一部のユニットテストでのみ機能するため、汚いソリューションも歓迎します。

+0

あなたのテストでLocalDateTime.nowへの呼び出しからAPIの結果を引くと、結果は一貫しているはずです。 –

+0

それはできません。 APIは単にLocalDateTimeを返すのではなく、新しいデータを作成するために多くのことを行いますが、これはnow()の値に依存します。私はテストサイトですべてを再実装する必要があります。 – Marcel

+2

次に、質問を編集して、APIの入力と出力を詳細に説明する必要があります。 –

答えて

0

オプション1:Powermock

使用してモックの静的メソッドは、静的メソッドをからかうと、正しいオブジェクトにそれが呼び出されるたびに返すことによって、これを行うことができます。

@PrepareForTest(LocalDateTime.class) //This is added added at test class 
PowerMockito.mockStatic(LocalDateTime.class); 
Mockito.when(LocalDateTime.now()).thenReturn(firstLocalDateTime); 
Mockito.when(LocalDateTime.now()).thenReturn(secondLocalDateTime); 

あなたがpowermockを使用せずに模擬することができる方法で呼び出しをラップhttps://github.com/jayway/powermock/wiki/MockitoUsage#mocking-static-method

オプション2 を参照してください。

+0

'LocalDateTime'は最終クラスであるため、' PowerMockito'を使う必要があります。 – Makoto

関連する問題