テストをしていない従来のアプリケーションを扱う必要があります。したがって、リファクタリングを開始する前に、すべてがそのまま動作することを確認したいと思います。単体テストのパラメータとしてのAnyString()
ここで、次のような状況を想像してみてください。
public SomeObject doSomething(final OtherObject x, final String something) {
if(x == null) throw new RuntimeException("x may not be null!");
...
}
は今、私はそれが動作し、私はリファクタリングたら、私はそれを失うことはありません確かに、それはnullチェックをテストしたいです。
だから私は、これは当然のことながら働く、今、この
@Test(expected = RuntimeException.class)
public void ifOtherObjectIsNullExpectRuntimeException() {
myTestObject.doSomething(null, "testString");
}
をしました。
"testString"の代わりにランダムなStringを渡したいと思います。
だから私が試した:
しかし、これは許可されていない、私は
org.mockito.exceptions.misusing.InvalidUseOfMatchersException得るよう:。 を...あなたは検証の外で引数マッチャーを使用することはできませんかスタブしてください
私はこれの意味を理解していますが、私はテストなどをパラメータ化せずに私が望むことをやっていけるかどうかは疑問です。 私が使用できるライブラリは、Junit、AssertJ、Mockito、Powermockだけです。
アイデア?
これは文字列には有効ですが、たとえばロングや他のオブジェクト? – Sorona
また、randomUUID()はnull afaikを返すことはないので、これは大きな欠点です。 – Sorona
@Sorona [java.util.Random](https://docs.oracle.com/javase/7/docs/api/java/util/Random.html)を参照してください。ランダムな値でテストするために必要なものはすべてここにあります。また、ヌル値をテストする場合は、別の単体テストにする必要があります。単体テストは安価で速いと思われます。それが必要だと思う新しいテストケースを追加することを恐れてはいけません! – nasukkin