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

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

ただいまの
回答率

90.48%

  • C#

    9236questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5651questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • テスト駆動開発

    66questions

    テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Jetbrains RiderでのC#テスト作成方法について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 346

mofu_mofu

score 61

お世話になっております。

プログラミング言語の質問というよりはどちらかというとプログラミングエディタの質問です。

テスト駆動開発を勉強最近しはじめたのですが、Jetbrains RiderでUnityのテストコードは作成できますでしょうか。

他のJetbrainsのエディタではCtrl + Shift + TもしくはAlt + Enterで作れるみたいなのですが、RiderではExplorerウィンドウのフォルダを右クリックして、Add > Playmode testで作るしかないようでした。

イメージ説明

Alt + Enterでも表示されない

イメージ説明


そこで質問なのですが、

①(Playmodetestとの違いがあまりわかっていないですが)Jetbrains Riderでedit mode testを作れないか

  • 選択肢にPlaymode Testしか表示されていないため。
  • UnityのPlayで実行されるテストがPlaymodeTest、それ以外はeditModeTestという風に解釈しています
  • EditModeTestでテストケースを作れないかと疑問に思う理由はこのUnity使いは全員Unity Test Runnerを使え!爆速のトライ&エラー環境だぞ!というqiitaの記事をみて基本的にeditmodeでテストを作るべきというふうに書いてあったためです

②Unityで実装したAssets/Scripts/HogeController.csと作成したテストの関連付けはどうすればいいのか

  • 単にAssets/Tests/xxx/HogeControllerTest.csとすればAssets/Scripts/HogeController.csのテストコードを書いているという認識でいいのでしょうか
  • 「Jetbrains IntelliJのエディタではcreate testとやればpom.xmlに勝手に依存が記載される」ととある本に書いてあったので何らかの関連をどこかで明記する必要があるのかと思いました。

環境

Windows10
Jetbrains Rider 2018.2
Unity 2018.2.12f1
.NET Framework 4.6

以上となりますがよろしくお願いいたします。


 解決策

nakajimakotaroさんに解決方法を教えていただきました。ありがとうございました。

  • JetbrainsRiderのExplorerのEditorフォルダ配下で右クリックすればEdit Mode Testを作るコマンドが出てくる

イメージ説明

対して、

  • JetbrainsRiderのExplorerのEditorフォルダの外で右クリックすればPlay Mode Testを作るコマンドが出てくる

イメージ説明

そして、
Editorフォルダ以下にTests.csがあればそれはEditModeTest用のテストになる
Editorフォルダ以下にTests.csがあればそれはPlayModeTest用のテストになる

またそれとは別の問題で

Unityプロジェクトではない通常のC#のNUnitテストであれば、開発用のHogeプロジェクトとは別にHogeTestプロジェクトを作成するが、HogeTestプロジェクトにHogeプロジェクトの情報を渡してやるには

Jetbrains RiderのExplorer > HogeTestプロジェクト > References > 右クリック > Add Reference... > Hogeプロジェクトを追加


してやればいい

イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

すでに解決済みかもしれませんが、
Unity使いは全員Unity Test Runnerを使え!爆速のトライ&エラー環境だぞ!
に答えが書いてあります。

①(Playmodetestとの違いがあまりわかっていないですが)Jetbrains Riderでedit mode testを作れないか 

については

[Test],[UnityTest]などを含むクラスファイルがEditor/以下にあるならEditModeテスト、そうでなければPlayModeテストと認識される

のでEditorフォルダ内におけばEditModeテストになり、

②Unityで実装したAssets/Scripts/HogeController.csと作成したテストの関連付けはどうすればいいのか 

については
特に関連付けなどは必要ありません。
そのまま呼び出せば良いです。

テストの実行方法ですが、UnityメニューのWindow/Test Runnerから実行できます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/12 23:28

    nakajimakotaroさん。ありがとうございます。
    先程確認したのですが、Editorフォルダ以下でのテストはEditor Testででした。

    RiderでNUnitでのテスト開発の勉強をしているのですが、Unityを使っていないC#のソリューション内で、通常のコード用のプロジェクトとテストコード用のプロジェクトが別れているので、Referenceに参照させてあげる必要があると思うのですが、それがなかったのでちょっと戸惑っていました。

    そのまま書けばいいのですね。これとはまた別件になりますが、ただプライベートメソッドのテストはするなと書いてあって、書いているコードの大体がprivateなんですけど...という感じなんのですが
    その場合どうされていますでしょうか。

    キャンセル

  • 2018/11/12 23:40 編集

    すみません、Editorテストは修正しました。

    privateメソッドはリフレクションで呼び出せます。

    キャンセル

  • 2018/11/13 10:57

    nakajimakotaroさん。ありがとうございます。

    お酒飲んでいる状態で書くものではないですね...。大変失礼いたしました。
    Editorフォルダ以下ならEditorModeTest、Editorフォルダ以下に置かないのであればPlayModeTest扱いになること、また、privateメソッドに関してはリフレクションを呼び出してテストをすること、大変参考になりました。ありがとうございます。

    ベストアンサーとさせていただきました。

    キャンセル

  • 2018/11/13 11:03 編集

    Unityのプロジェクトではない通常のNUnitテストであれば、ソリューション以下のプロジェクトとTestプロジェクトが分離されているため、TestプロジェクトのReferenceにテストする側の参照を追加してやる必要があると思います。が、その参照も(Unityプロジェクトなら同じプロジェクト内にテストを作成するので)不要と理解いたしました。

    重ね重ねになりますが、ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C#

    9236questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5651questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • テスト駆動開発

    66questions

    テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。