221

jUnitで書くためのより良い方法はありますか

String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
4

10 に答える 10

341

HamcrestとJUnit4を追加すると、次のことができます。

String x = "foo bar";
Assert.assertThat(x, CoreMatchers.containsString("foo"));

いくつかの静的インポートを使用すると、見た目がはるかに良くなります。

assertThat(x, containsString("foo"));

必要な静的インポートは次のとおりです。

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.containsString;
于 2009-07-07T13:05:52.453 に答える
17

可能な限りfest assert 2.0を使用してください編集: assertjにはより多くのアサーション(フォーク)がある場合があります

assertThat(x).contains("foo");
于 2012-12-08T12:05:33.843 に答える
5

新しい構文をHamcrestassertThatと一緒に使用します。

JUnit4.4以降で使用できます。

于 2009-07-07T13:04:54.513 に答える
2

別のバリアントは

Assert.assertThat(actual, new Matches(expectedRegex));

さらに、などorg.mockito.internal.matchersの興味深いマッチャーが他にもいくつかあります。StartWithContains

于 2016-05-13T13:53:11.543 に答える
1

assertj バリアント

import org.assertj.core.api.Assertions;
Assertions.assertThat(actualStr).contains(subStr);
于 2020-05-27T07:42:20.270 に答える
0

このページで多くの回答を試しましたが、実際には何も機能しませんでした:

  • org.hamcrest.CoreMatchers.containsStringがコンパイルされず、メソッドを解決できません。
  • JUnitMatchers.containsStringは廃止されました (そして CoreMatchers.containsString を参照します)。
  • org.hamcrest.Matchers.containsString : NoSuchMethodError

そのため、読みやすいコードを書く代わりに、質問に記載されているシンプルで実行可能なアプローチを使用することにしました。

うまくいけば、別の解決策が出てくるでしょう。

于 2016-11-19T14:00:22.397 に答える