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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

590閲覧

Junitを用いた四則演算のテストの仕方が分かりません。

DrqYuto

総合スコア432

JUnit

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/05/21 09:22

新Javaの写経をしてます。授業でJUnitを教わったので、テストを試そうとしましたが書き方が分かりません。

新・明解Java入門 | 柴田 望洋 | プログラミング | Kindleストア | Amazon
https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3Java%E5%85%A5%E9%96%80-%E6%9F%B4%E7%94%B0-%E6%9C%9B%E6%B4%8B-ebook/dp/B01HYSUY92
""

import java.util.Scanner; public class ArithInt { public static void main(String[] args) throws Exception { // Your code here Scanner stdIn = new Scanner(System.in); System.out.println("xとyの加減乗除します。"); System.out.println("xの値:"); int x = stdIn.nextInt(); System.out.println("yの値:"); int y = stdIn.nextInt(); System.out.println("x+y="+(x+y)); System.out.println("x-y="+(x-y)); System.out.println("x/y="+(x/y)); System.out.println("x%y="+(x%y)); } }

以下は三角形のテストです。

public class Triangle { public static int getType(int a,int b,int c) { return 0; } }

に対し

import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; public class TriangleTest { @Test //ここが大事 public void test_01() { assertThat(Triangle.getType(0, 1, 2),is(-1)); assertThat(Triangle.getType(0, 0, 0),is(-1)); assertThat(Triangle.getType(-2, 8, 5),is(-1)); } @Test public void testGetType_02() { assertThat(Triangle.getType(5, 5, 10),is(0)); } }

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

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

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

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

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

mather

2019/05/21 09:43

写経をしていて書き方がわからないってどういうことですか? 今書いているコードは写経ではない?
DrqYuto

2019/05/21 09:44

わかりにくくてすみません。四則演算の部分が写経したものです。そこはわかったのですが、JUnitでテストをする方法が分かりません。
mather

2019/05/21 09:47

「三角形のテスト」の部分はサンプルということですね。 そもそもこのテストも失敗していると思いますが…。
DrqYuto

2019/05/21 09:50

はい。三角形のテストの部分は授業で教わったものです。 assertThat(Triangle.getType(0, 1, 2),is(-1)); ここで失敗しますが、先生曰くわざと失敗するのも大事らしいです。 わかったことはis(0)でreturn 0をチェックしているのだろうということです。
guest

回答1

0

ベストアンサー

こちらのように出力先をバイトストリームに変えておいて、出力結果をチェックする方法もありますが、標準入力まで必要なのでややこしいですね。
http://d.hatena.ne.jp/kokuzawa/20100606/1275848169

上記の意味がよくわからなければ、一旦今の main 関数のテストは諦めたほうがいいと思います。

個人的には四則演算部分を関数として定義して、関数の入出力をテストすべきかと思います。
ただ、こういうことをすると写経の範囲を超えるのでおすすめしません。

投稿2019/05/21 09:53

mather

総合スコア6753

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

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

DrqYuto

2019/05/21 09:56

バイトストリームは初めて聞きました。関数の定義をやってみます。
DrqYuto

2019/05/21 11:02

メソッドはmainの上に書くことは分かりました。
DrqYuto

2019/05/21 13:10

``` import java.util.Scanner; public class ArithInt { static int sum(int x,int y) { return x+y; } public static void main(String[] args) throws Exception { // Your code here Scanner stdIn = new Scanner(System.in); System.out.println("xとyの加減乗除します。"); System.out.println("xの値:"); int x = stdIn.nextInt(); System.out.println("yの値:"); int y = stdIn.nextInt(); System.out.println("x+y="+sum(x,y)); System.out.println("x-y="+(x-y)); System.out.println("x/y="+(x/y)); System.out.println("x%y="+(x%y)); } } に対し import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; public class ArithIntTest { @Test public void test() { assertThat(ArithInt.sum(7, 5),is(12)); } } とテストしたところ緑になりました。こういうことでしょうか?
mather

2019/05/22 01:30

それもありだと思いますし、演算を別のクラスにするのも良いと思います。
DrqYuto

2019/05/22 06:53

なるほどです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問