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

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

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

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

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

Q&A

解決済

1回答

2150閲覧

JAVA配列のクラスを取得

yamame01

総合スコア16

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

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

0グッド

0クリップ

投稿2020/09/15 08:52

前提・実現したいこと

JUnitの作成しています。
その中で、privateメソッドのテストをしたいため、PowerMockitoを使用してアクセス可能にし、
テストを行いたいです。

ただ、テスト対象メソッドの中に配列を渡しているメソッドがあり、どのように指定すればいいのかわからず
いろいろ試したのですが、正しい型を指定できていないのか
java.lang.NoSuchMethodException
が出てしまうため、指定するべきクラスをご教授いただければと思いました。
よろしくお願いいたします。

発生している問題・エラーメッセージ

java.lang.NoSuchMethodException

該当のソースコード

テスト対象クラス

Java

1private List<String> test(List<String> strList, String[] strArr) { 2 List<String> res = new ArrayList<>(); 3 4 for (int i = 0; i < strList.size(); i++) { 5 res.add(strList.get(i) + "_" + strArr[0]); 6 } 7 8 return res; 9}

テストクラス

Java

1@InjectMocks 2TestClass _target; 3 4@Before 5public void setUp() throws Exception { 6 _target = new TestClass(); 7} 8 9@Test 10private void test_junit() throws Exception { 11 Method method = DbViewerGetTableDataLogic.class.getDeclaredMethod( 12 "test", List.class, /* ここに書くべきクラスが分からない */); 13 method.setAccessible(true); 14 15 List<String> strList = Arrays.asList("list1", "list2"); 16 String[] arr = {"arr1", "arr2"}; 17 18 List<String> expect = Arrays.asList("list1_arr1", "list2_arr2"); 19 20 TestClass spy = PowerMockito.spy(_target); 21 22 List<String> actual = (List<String>) method.invoke(spy, strList, strArr); 23 assertThat(actual, is(expect)); 24}

コメントアウト部

/* ここに書くべきクラスが分からない */

に書くべきクラスを知りたいです。

試したこと

String.class
Array.class
を試しましたが、どれもNoSuchMethodExceptionになってしまいました。

初歩的な質問で申し訳ありませんが、ご教授いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

PowerMockitoはよく知りませんが、String[].classなのでは?

java

1public class ArrTest1 { 2 void test(List<String> list, String[] arr) {} 3 public static void main(String[] args) throws Exception { 4 System.out.println(ArrTest1.class.getDeclaredMethod("test", List.class, String[].class)); 5 } 6 // void ArrTest1.test(java.util.List,java.lang.String[]) 7}

投稿2020/09/15 13:28

shiketa

総合スコア3971

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

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

yamame01

2020/09/16 00:11

ご回答ありがとうございます!! String[].classはclassを取得できないと思い込んでおりました。 String[].classにすることで解決いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問