する質問をすることでしか得られない、回答やアドバイスがある。308前提・実現したいこと関数型IFを返却するメソッドの戻り値を検証したい場合、どうしたらいいでしょうか。]であることを検証したい場合jUnitではどう検証を行えばいいでしょうか?また、関数型IFに適したMathcerのライブラリなどをご存知の方がいればご教示いただきたいです。}でもOKになってしまうため、正しい検証にはなっていません。4.12attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。全部通るか検証する方法があります。"悪意を持った"実装者がよほど運が良くなければテスト通りません。実装者に「入力としてあり得るすべての値でテスト通るようにしろ」という意図を伝える事ができるってことです。この程度の関数だと、質問文のコードのままで意図が十分伝わるはずので全然問題ないことになっちゃいますがね。"hoge"自体のテストを抜け道潰して行おうとするとexceptで同じ関数を実装することになって意味がなくなります。testというものを行います。f(x).substring(0,x.length()).equals(x);みたいな関数それ自体の性質を何個か作り、それをテストします。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。13:38そういうことです。返却値が関数のようなものなので試験なんて出来ないんでしょうかね。返却値が関数のようなものなので試験なんて出来ないんでしょうかね。15:02やはり返却された関数も同様に試験的なことをしないと無理ですよね。この場合は簡潔ですが、返却された関数が複雑なメソッドの場合二重に試験を行わなければいけなくなりそうですね。返却された関数も同様に試験的なことをしないと無理ですよね。この場合は簡潔ですが、返却された関数が複雑なメソッドの場合二重に試験を行わなければいけなくなりそうですね。strを取る二引数関数をカリー化したものだといえます。したらsampleMethodとその戻り値をあわせて二引数関数と捉え、単に二引数関数をテストするのだと考えればそれほどおかしいこと、二重に試験をしているというわけではないと言えます。strを取る二引数関数をカリー化したものだといえます。したらsampleMethodとその戻り値をあわせて二引数関数と捉え、単に二引数関数をテストするのだと考えればそれほどおかしいこと、二重に試験をしているというわけではないと言えます。09:51一つの関数として考えればっていうことですね。その考え方もありですね。一つの関数として考えればっていうことですね。その考え方もありですね。キャンセル完了するlink+2私ならこう書くかなぁ。実際のテストでは特にこっちの方がわかりやすいとおもう。実際に近い命名をしてみました。戻り値のFunctionはHogeを連結する関数型なので、テストする内容はHogeが連結されていることになります。意図が明確になると違和感がないと思います。}テストは結果や意図が明確であることが大事だと思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:59やはり返却された関数をさらに試験するようにしないとだめそうですね。こちらで期待した関数とアサーションできないかと考えていたのですがそれは無理そうですよね。返却された関数をさらに試験するようにしないとだめそうですね。こちらで期待した関数とアサーションできないかと考えていたのですがそれは無理そうですよね。関数とアサーションする必要があるかどうかというのがポイントになりそうです。私が例題の関数は引数によって文字列を装飾してくれるメソッドなので、装飾されていること、それが一目でわかるテストというのが大事だと思います。境界条件などのテストでわかりずらいテストケースも必要ですが、基本のテストは、仕様の説明であるべきで、基本型でチェックを基本とすべきと考えています。基本型にすべき理由としては、わかりやすさが一番にありますが、exceptが計算式やメソッド(この場合は式)の場合、中身はチェック対象と全く同じになるため、exceptにバグを作る可能性があります。例の場合は特に、チェック対象のメソッドと同じものを作成しているので、テストしていないのと同じになってしまいます。関数とアサーションする必要があるかどうかというのがポイントになりそうです。私が例題の関数は引数によって文字列を装飾してくれるメソッドなので、装飾されていること、それが一目でわかるテストというのが大事だと思います。境界条件などのテストでわかりずらいテストケースも必要ですが、基本のテストは、仕様の説明であるべきで、基本型でチェックを基本とすべきと考えています。基本型にすべき理由としては、わかりやすさが一番にありますが、exceptが計算式やメソッド(この場合は式)の場合、中身はチェック対象と全く同じになるため、exceptにバグを作る可能性があります。例の場合は特に、チェック対象のメソッドと同じものを作成しているので、テストしていないのと同じになってしまいます。17:40意味のあるメソッドであればそうですね。一般的な場合で質問をしたかったので簡単な例を出したのですが、確かにメソッドの意味を考えてテストをするというのもひとつの方法であるかもしれませんね。expectをまったく同じ形にしたのはこの条件のときにこの式を返すとしたかったわけです。いう形での検証は出来なそうですね。意味のあるメソッドであればそうですね。一般的な場合で質問をしたかったので簡単な例を出したのですが、確かにメソッドの意味を考えてテストをするというのもひとつの方法であるかもしれませんね。expectをまったく同じ形にしたのはこの条件のときにこの式を返すとしたかったわけです。いう形での検証は出来なそうですね。18:10できるできない以前に、メソッドのテストの場合と同じように戻ってきたFunctionのテストをすれば十分だとおもいます。メソッドと同様に複雑なFunctionはありえますから・・・とはいえ、必要なパターンも含め、このような純粋な思考も面白く思います。できるできない以前に、メソッドのテストの場合と同じように戻ってきたFunctionのテストをすれば十分だとおもいます。いえ、必要なパターンも含め、このような純粋な思考も面白く思います。複雑なFunctionが返ってきた場合は結局そのFunctionの試験もしなければならないのが億劫ですね。すごく複雑なメソッド(str)));のような形でできたらなあという妄想です。複雑なFunctionが返ってきた場合は結局そのFunctionの試験もしなければならないのが億劫ですね。ような形でできたらなあという妄想です。ユニットテストにすごく複雑なメソッドを実際に書くことになり、現実的ではないですよ。テストにバグを作ります。まともな設計でまともな粒度のテストを書けば、そんな複雑なテストは不要です。逆を言えば、複雑なテストが必要になる時点で設計を間違っていると考えて問題ありません。ユニットテストにすごく複雑なメソッドを実際に書くことになり、現実的ではないですよ。テストにバグを作ります。まともな設計でまともな粒度のテストを書けば、そんな複雑なテストは不要です。逆を言えば、複雑なテストが必要になる時点で設計を間違っていると考えて問題ありません。検証結果がtrueとなってしまうだけです。検証してる内容が正しくないように思えますが、いかがでしょうか。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。13:35それは分かっています。この検証だとNGなのでどう検証をすればいいのかというのが今回の質問です。それは分かっています。この検証だとNGなのでどう検証をすればいいのかというのが今回の質問です。キャンセル完了するlink+1関数なので単一の値のテストではどのみち不十分ですね。いって沢山やる必要もないですが、こんなふうに一々書くことの手間を減らせれば充分という気がしました。is(expect.apply("bar")));...JUnit初心者なので何が適切かは全然自身ないですが。以下のようなマッチャーを定義してそれを使うといったアイデアが浮かびました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。15:01マッチャーを定義して値をたくさん入れてっていうのは良さそうですね。自動で文字列を生成してランダム文字列を指定回数分チェックとかもできたら整合率もかなり高くできそうですね。マッチャーを定義して値をたくさん入れてっていうのは良さそうですね。自動で文字列を生成してランダム文字列を指定回数分チェックとかもできたら整合率もかなり高くできそうですね。使用について解決済JUnitでstatic関数をMock化したい受付中Android向けライブラリをGradle+JaCoCoでカバレッジを取得したい。解決済JUnitでenumシングルトンクラスを連続でテストする際に、前の値が保持されてしまう。頂いたご意見への回答は行っておりません。