テストのないレガシーアプリケーションを処理する必要があります。したがって、リファクタリングを開始する前に、すべてがそのまま機能することを確認したいと思います。
ここで、次の状況を想像してください。
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」の代わりに、ランダムな文字列を渡したいと思います。
だから私は試してみました:
@Test(expected = RuntimeException.class)
public void ifOtherObjectIsNullExpectRuntimeException() {
myTestObject.doSomething(null, Mockito.anyString());
}
しかし、これは許可されていません。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:...検証またはスタブ以外で引数マッチャーを使用することはできません
これの意味は理解できますが、テストなどをパラメータ化せずに、やりたいことができるのではないかと思います。私が使用できるライブラリは、Junit、AssertJ、Mockito、Powermockだけです。
何か案は?
さて、私はmockitoの知識があまりありませんが、いつでも独自のランダム文字列ジェネレータを作成できます。多分それはうまくいくことができ、uはその中のより多くのタイプの入力を変更することができます