出産前後の痔にはご注意!

JUnitで以下のようなコードをテストしましたが、カバレッジが100%とはなりません。
どのようにすれば100%を確保できませすでしょうか。

① IF a>0 ||
②   b>0 ||
③   c>0 ||

aに5をセットしてテスト実行すると①は通過、②、③は未通過と判断されます。
一番最後の条件のcに5をセットすれば、①、②、③とも通過と判断されますでしょうか。

A 回答 (3件)

短絡評価の論理和が3個有るので、カバレッジを満たすパターンは4個必要です



例)
if (a>0 || b>0 || c>0 || ... ) { ... }
a=1, b=0, c=0 → 1だけ通過
a=0, b=1, c=0 → 1-2を通過
a=0, b=0, c=1 → 1-3を通過
a=0, b=0, c=0 → 1-3と後続条件を通過
    • good
    • 0
この回答へのお礼

詳細に解説いただき、理解できました。
ご回答ありがとうございました。

お礼日時:2017/07/18 10:39

ANO2 さんのようなパターン、いる可能性高いです。


本当はC1なら、ifの中の論理式がtrueとfalseのパターンだけで
いいんですが、Jacocoみたいにbytecodeで分岐網羅という方針だと
JavaレベルではC1でもC2なみになってしまうことが多いですね。

ifの中に式を書くのやめないと、単体テスト工数、増えちゃいます。
    • good
    • 0
この回答へのお礼

アカデミックに説明いただき、とても勉強になりました。
ありがとうございました。

お礼日時:2017/07/18 10:38

>① IF a>0 ||


>②   b>0 ||
>③   c>0 ||

何ですか? これ!
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
後続のご回答にありますが、||はORの意味です。

お礼日時:2017/07/18 10:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QC++を学ぶためにCの知識は必須ですか?

将来の就職と個人的興味のため、C++を勉強しようと思ったんですが(C++にはオブヘクト志向があるため)ネットでいろいろ調べていると「Cが基盤になっているためCから勉強を始めたほうがいい」とありました。
正確にはどこまでの知識と経験が必要ですか?
そもそもC++を学ぶためにCの知識は必須ですか?

Aベストアンサー

まあ、Cの言語仕様を一通り軽くやっといた方が良いかも。
ポインター、配列、構造体、整数演算、型の表記の仕方とかは
結構癖があるから、事前に知っといた方が良いでしょう。

Cの言語仕様ってC++に比べて驚くほど小さいので
そんなに時間はかからないと思う。
最初からクラスも大変だし、最初はベターCから
始めるのも良いのでは。

しかし就職にC++が役立つかというと、確かに
c++使いまくりのシステムもあるが
Javaの方が圧倒的に有利というのは
覚えておいた方が良いでしょう。

Qシステムエンジニアを目指している者です。 今、職場でnotesの開発を教えてもらっているのですが、n

システムエンジニアを目指している者です。
今、職場でnotesの開発を教えてもらっているのですが、notesって勉強して今後役立つものなのでしょうか?懐かしいイメージなのですが。
他の開発と共通する部分があればいいのですが。

javaも今自力で勉強しているところです。

詳しい方いたら色々教えてください。
よろしくお願いします。

Aベストアンサー

notesは中途半端な感がありますが、作り込むと別アプリになるくらいの
機能がつまっています。
イメージ的にはRPGツクールてきな掲示板ツクールだとおもってください
他の開発にはあまり役に立たないと思いますが、
技術を共有する部分は多々あるのでVB系の処理とは親和性が高いでしょう

Qweb アプリケーション構築の方法について

今年からIT系の会社に入社しました。
パソコンのこと、プログラミングのことはあまり詳しくありません。
現在実務に向け学習しておりますがよくわからないことがありますので教えていただきたいことがります。
あまり詳しいことは分からないので簡単に説明させていただきますと
JAVAの学習を1ヶ月してから社内のスケジュール管理システムを作成する課題に取り組んでいます
少し詳しい同僚と一緒にやっていますが
開発環境はeclipseを使いmysql、tomcatとJSP、サーブレットを使って画面と処理のプログラムを作りました。
そして現在、完成したプログラムを実用化するためのセットアップ作業に取り組んでいるのですが
上手く設定ができないようです。
ディレクトリの作成に問題題がありそうなのですが

そこで、お聞きしたいことは、自分のパソコンでプログラムを作った後
システムを公開するまでの工程と仕組みについて
出来ましたら初心者がつまづきそうな部分など
なんでも良いので情報が欲しいとおもいます。
ちなみにサーバーは普段使っていないパソコンでOSはWindows7で行っています。
説明に不備がございましたら申し上げてください
宜しくお願いします。

今年からIT系の会社に入社しました。
パソコンのこと、プログラミングのことはあまり詳しくありません。
現在実務に向け学習しておりますがよくわからないことがありますので教えていただきたいことがります。
あまり詳しいことは分からないので簡単に説明させていただきますと
JAVAの学習を1ヶ月してから社内のスケジュール管理システムを作成する課題に取り組んでいます
少し詳しい同僚と一緒にやっていますが
開発環境はeclipseを使いmysql、tomcatとJSP、サーブレットを使って画面と処理のプログラムを...続きを読む

Aベストアンサー

ひょっとしてWebアプリのリリースの仕方が
判らないという話?

Eclipse でwar作って

https://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html#Deploying_on_a_running_Tomcat_server



Deploying on a running Tomcat server

あたりを試してみれば?

Qeclipseでソースを保存すると、使用されていない変数が削除されてしまいます。

eclipseの設定がそのようになっていると思うのですが、
どうすれば、なおせますか?

例:
String str = "abc";

strが使用されていない場合、ソース保存時に勝手に削除される。

Aベストアンサー

eclipseのバージョンによって異なるかもしれませんが、
メニューの Window > Preferences で表示されるウィンドウの左側で
Java > Editor > Save Actions
をクリックして表示される右側のペインで
[Perform the selected actions on save] のチェックボックスをオン、
その下の [Additional actions] のチェックボックスをオン、
その右側の [Configure...] ボタンをクリック、
ウィンドウが表示されますので、その一番右側の [Unnecessry Code] タブをクリックすると
[Remove unused local variables] とのチェックボックスがありますので、そのチェックを外してください。

QActivityクラスの取得方法

AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得したいのですが、どうすれば取得できますでしょうか?
BroadcastReceiverクラス内で

Intent intent1 = new Intent(activity.getApplication(), Error.class);
activity.startActivity(intent1);と入力すると startActivity の部分が赤字になってしまうのですが
Activity activity = new Activity();とし

....activity. startActivity などとしても変数が灰色で困っています。

AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得したいのですが、どうすれば取得できるか教えてください。

目的
Android端末のWi-Fiの接続が切れた時にエラー画面に遷移させたい。

参考
https://kokufu.blogspot.jp/2016/12/android-wi-fi-access-point_3.html

----

import android.content.IntentFilter;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
// Activity 等の Context の中で
WifiConnectionWatcher mWifiConnectionWatcher = new WifiConnectionWatcher();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onResume() {
super.onResume();

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); // "android.net.wifi.STATE_CHANGE"

registerReceiver(mWifiConnectionWatcher, intentFilter);
}

@Override
protected void onPause() {
super.onPause();

unregisterReceiver(mWifiConnectionWatcher);
}
}
ーーー

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.util.Log;

import static android.content.ContentValues.TAG;

public class WifiConnectionWatcher extends BroadcastReceiver {
Activity activity = new Activity();
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { // "android.net.wifi.STATE_CHANGE"
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
switch (info.getState()) {
case DISCONNECTED:
Intent intent1 = new Intent(activity.getApplication(), Error.class);
activity.startActivity(intent1);
break;
case SUSPENDED:
break;
case CONNECTING:
break;
case CONNECTED:
break;
case DISCONNECTING:
break;
case UNKNOWN:
Log.e(TAG, "Wifi connection state is UNKNOWN");
break;
default:
Log.e(TAG, "Wifi connection state is OTHER");
break;
}
}
}
}
----
import android.app.Activity;
import android.os.Bundle;

public class Error extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.error);
}
}
-----
<activity android:name=".Error"></activity>
<receiver android:name=".WifiConnectionWatcher">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGED">
</action></intent-filter>
</receiver>

AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得したいのですが、どうすれば取得できますでしょうか?
BroadcastReceiverクラス内で

Intent intent1 = new Intent(activity.getApplication(), Error.class);
activity.startActivity(intent1);と入力すると startActivity の部分が赤字になってしまうのですが
Activity activity = new Activity();とし

....activity. startActivity などとしても変数が灰色で困っています。

AndroidStudioでBroadcastReceiverクラス内でActivityク...続きを読む

Aベストアンサー

取得するんじゃなくて教えておくのが簡単。

QJIS8の半角かな文字をUnicodeの全角文字への変換について

Java1年目の初心者です。

質問もどのように説明していいかわからなかったので、
至らないところもあるかと思いますが、どうぞ宜しくお願いします。

JIS8の半角カナ文字をUnicodeの全角文字へ変換するロジックを考えております。
やりたいことは以下になります。

①JIS8の変換元テーブル、Unicodeの変換後テーブルをint型の配列に定義します。

//JIS8のテーブル
static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
//Unicodeのテーブル(以下の文字コードはUnicodeの全角コードではありません)
satic final int[] UNICODETABLE = {0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX};

②HashMapのKeyに変換元テーブルの値、Valueに変換後テーブルの全角のコードを設定しています。
static Map<Integer,Integer> conTable = new HashMap<Integer,Integer>();
static
{
conTable.put(JISTABLE[0],UNICODETABLE[0]);
conTable.put(JISTABLE[1],UNICODETABLE[1]);
conTable.put(JISTABLE[2],UNICODETABLE[2]);
conTable.put(JISTABLE[3],UNICODETABLE[3]);
conTable.put(JISTABLE[4],UNICODETABLE[4]);
conTable.put(JISTABLE[5],UNICODETABLE[5]);
conTable.put(JISTABLE[6],UNICODETABLE[6]);
conTable.put(JISTABLE[7],UNICODETABLE[7]);
}

③指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い、HashMapのKeyに存在したらValueの全角文字を返すということを
やりたいのですが、英数字は問題なく変換できるのですが、半角のカナがうまく変換されません(HashMapのKey値とマッチしない)
16進数で確認しても期待した文字コードになりません。

JIS8においての半角かなは何か特殊なのでしょうか?
また、どうやればKey値とマッチするようにできるのでしょうか?
ご教授いただければと思います。

Java1年目の初心者です。

質問もどのように説明していいかわからなかったので、
至らないところもあるかと思いますが、どうぞ宜しくお願いします。

JIS8の半角カナ文字をUnicodeの全角文字へ変換するロジックを考えております。
やりたいことは以下になります。

①JIS8の変換元テーブル、Unicodeの変換後テーブルをint型の配列に定義します。

//JIS8のテーブル
static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
//Unicodeのテーブル(以下の文字コードはUnico...続きを読む

Aベストアンサー

> //JIS8のテーブル
> static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};

JIS8の半角カナなら、8bitのはずですが、0xFFb1 などと、16bitが混じってます。
どういうことでしょうか?
(ついでに、UnicodeのFFB1、FFB2等は半角カナではありません)

byteの配列としてJIS8を取り込んだのなら、8bitしかないJIS8の文字が 32bitの 0xffb1 と一致するはずがありません。

> 指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い

この文字列は、どのように取り込んだものでしょうか?
その段階で、JIS8ではなくなっているとかは、考えられませんか?
例えば、 ファイルからStringへ読み込んだ段階で、内部用のコードに変換がかかってるとか。


外部のJIS8
→Java内部にStringとして取り込み(Unicodeに変換)
→ Stringで半角カナから全角カナ変換
(例 http://www7a.biglobe.ne.jp/~java-master/samples/string/HankakuKatakanaToZenkakuKatakana.html)

とするのがいいように思います。

> //JIS8のテーブル
> static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};

JIS8の半角カナなら、8bitのはずですが、0xFFb1 などと、16bitが混じってます。
どういうことでしょうか?
(ついでに、UnicodeのFFB1、FFB2等は半角カナではありません)

byteの配列としてJIS8を取り込んだのなら、8bitしかないJIS8の文字が 32bitの 0xffb1 と一致するはずがありません。

> 指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い

この文字列は、どのように取り込んだものでしょう...続きを読む

Qプログラムの改良

人の作ったプログラムを改良することになりました。
Visual C++ は初めてですが、CやC++は一通り勉強しています。

そこで、いろいろ調べているのですが、
例えば
「MFCは使わずに,Win32API SDKを用いた方法」
などという説明があります。

自分が対応しているプログラムが、そのどちらであるか、あるいはほかの方法で作られているか
というのはどうしたら分かるのでしょうか?

Aベストアンサー

No1です
私はC++は全然触ったこと無いので
あまり的確な回答は期待しないでくださいね

Q1.いいんじゃないでしょうか?
MSDNのOnPoint↓
https://msdn.microsoft.com/ja-jp/library/01c9aaty.aspx

OnPointクラス(Cwndクラス)
https://msdn.microsoft.com/ja-jp/library/1xb05f0h.aspx
このページの一番最初に
「Microsoft Foundation Class ライブラリにあるすべてのウィンドウ クラスの基本機能が用意されています。」と書いてありますから
そういうことですね

Q2.なんでもいいと思いますけど
そもそもあなたが対応するプログラムが
きちんとWin32のみで、もしくはMFCのみで書かれているとは限らないですからね
適当に作られて、両方が混在している可能性だってありますし

Q3.そこからですか
そこは調べればすぐ出てくるかと思いますが
MFCというのはWin32をラッピングしたものです

Q4.作った本人に聞く
仕様書とかがあるならそれを見る

No1です
私はC++は全然触ったこと無いので
あまり的確な回答は期待しないでくださいね

Q1.いいんじゃないでしょうか?
MSDNのOnPoint↓
https://msdn.microsoft.com/ja-jp/library/01c9aaty.aspx

OnPointクラス(Cwndクラス)
https://msdn.microsoft.com/ja-jp/library/1xb05f0h.aspx
このページの一番最初に
「Microsoft Foundation Class ライブラリにあるすべてのウィンドウ クラスの基本機能が用意されています。」と書いてありますから
そういうことですね

Q2.なんでもいいと思いますけど
そもそもあなたが...続きを読む

Qjavaについての質問

初歩的な質問なのですが、jdkをインストールしてコマンドプロントで「javac」を使おうとすると検出されずcdでディレクトリを変えると、次はコンパイルしたいファイルが認識されなくなりました。
どちらも認識されるようにするにはどういう設定が必要ですか?お願いします。

Aベストアンサー

私も、ちょうど昨日JAVAをインストールしたところです。


> jdkをインストールしてコマンドプロントで「javac」を使おうとすると検出されず

インストールしたjdkのbinフォルダの場所を、環境変数pathに設定してください。
例:私の場合 jdkをc:\javaフォルダにインストールしたので
  pathに設定するのは、C:\Java\jdk1.8.0_131\bin でした。

ご利用のWindowsの種類が不明なので具体的な方法を示せませんが
「Windows10 path 設定」などで検索してください。


> cdでディレクトリを変えると、次はコンパイルしたいファイルが認識されなくなりました。

コンパイルしたいファイルのあるフォルダで実行してください。

Qjava入門

System.out.print()のかっこの中身が表示されません
コードはこんな感じです
public class ○○
{
public static void main( String[] args )
{
System.out.print("こんにちは");
}
}

コマンドプロンプトでコンパイルしてるんですがjavac ファイル名.javaと入力しても何も表示されません(エラーも出ません)
なぜでしょうか?

Aベストアンサー

"javac ファイル名.java" はコンパイルを行うだけで実行されません(ファイル名.classが作成されます)

実行は "java ファイル名" です。(.classは不要)


人気Q&Aランキング