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

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

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

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

テスト駆動開発

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

Q&A

解決済

1回答

718閲覧

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

mofu_mofu

総合スコア73

C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

テスト駆動開発

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

0グッド

0クリップ

投稿2018/10/28 11:49

編集2018/11/13 02:18

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

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

テスト駆動開発を勉強最近しはじめたのですが、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プロジェクトを追加

してやればいい

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

すでに解決済みかもしれませんが、
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 05:58

編集2018/11/12 14:15
nakajimakotaro

総合スコア90

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

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

mofu_mofu

2018/11/12 14:28

nakajimakotaroさん。ありがとうございます。 先程確認したのですが、Editorフォルダ以下でのテストはEditor Testででした。 RiderでNUnitでのテスト開発の勉強をしているのですが、Unityを使っていないC#のソリューション内で、通常のコード用のプロジェクトとテストコード用のプロジェクトが別れているので、Referenceに参照させてあげる必要があると思うのですが、それがなかったのでちょっと戸惑っていました。 そのまま書けばいいのですね。これとはまた別件になりますが、ただプライベートメソッドのテストはするなと書いてあって、書いているコードの大体がprivateなんですけど...という感じなんのですが その場合どうされていますでしょうか。
nakajimakotaro

2018/11/12 14:41 編集

すみません、Editorテストは修正しました。 privateメソッドはリフレクションで呼び出せます。
mofu_mofu

2018/11/13 01:57

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

2018/11/13 02:04 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問