質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

8086閲覧

jmockit1.3でメソッドのみをモック化したい

nob777

総合スコア112

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/01/13 19:52

編集2017/01/13 20:32

例えば、AClassのメソッドであるAmethodのみをモック化したい場合、過去のバージョンでは、以下のような指定で実現できました。

Java

1@Mocked("Amethod") 2AClass a;

しかし、jmockitのバージョン1.3では、@Mockedのvalueメソッドが廃止されたようで、メソッド名を@Mockedの引数に指定できなくなってしまいました。

■質問事項
jmockitのバージョン1.3で特定クラスのメソッドのみをモック化するにはどのように実装すればよいのでしょうか?
※既存のMockUpで対処は可能ですが、あまりにも手間が掛かりすぎるので、メソッドのみの指定のような簡易的な方法を探しております

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようにExpectationsのコンストラクタの引数にモック化したいクラスを渡す方法ではどうでしょうか。

java

1 2import static org.hamcrest.CoreMatchers.*; 3import static org.hamcrest.MatcherAssert.*; 4 5import org.junit.Test; 6 7import mockit.Expectations; 8 9public class SampleTest { 10 11 @Test 12 public void test() { 13 14 AClass a = new AClass(); 15 16 // モック化するクラスを引数に渡してモック化するメソッドの振る舞いを記述する 17 new Expectations(AClass.class) {{ 18 a.Amethod(); 19 result = 3; 20 }}; 21 22 // Amethodのみがモック化される 23 assertThat(a.Amethod(), is(3)); 24 assertThat(a.Bmethod(), is(2)); 25 } 26 27 private static class AClass { 28 29 public int Amethod() { 30 return 1; 31 } 32 33 public int Bmethod() { 34 return 2; 35 } 36 } 37} 38

以下が参考になるかと思います。
http://jmockit.org/tutorial/Mocking.html#partial

投稿2017/01/16 06:04

makotribe

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nob777

2017/01/16 13:07

ご回答いただきありがとうございます! わたしのコードにも適用できることを確認できました。 まさにこのような代替え方法を探しておりました。 また、参考リンクも貼っていただき感謝しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問