変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

未分類

Eclipse+JBossでソースにブレークポイント・・・

JBossでJAVAソースをデバッグしていると・・・
「「行番号属性が見つからないため、ブレークポイントを」とメッセージが出ることがある。
ググってみると

  • メッセージを出さない様にするだけでOKな幸運な方もいる。
  • EclipseでJavaソースをビルドする時のJDKとJBossのサーバーに割り当てたJavaのJDKのバージョンが異なると無理らしい。
  • ソースにインナークラスが書いてあるとハマる。
  • Springが自動的にインナークラスを作る様なアノテーションでは無理。

など様々な状況で発生するらしい。
思い返すとJBossの古いバージョンで動かしていたものを新しいバージョンで動くようにするコンバートの最中に起きやすい気がした。
できれば新旧両方で動くのが望ましいので、古いバージョンへ、新しいバージョンへと切り替えているうちに・・・
今回はプロジェクトのJavaコンパイラのバージョンを変えた時や直前にビルドした時とJavaコンパイラのバージョンが異なるプロジェクトをコンパイルすると起きやすい様だ。
そんな時は・・・
Eclipseの「プロジェクト」の「クリーン」画面で「すべてのプロジェクトをクリーン(A)」にチェックを入れて【クリーン】ボタンを押すといいようだ。先のメッセージは出てくるが「表示しない」にチェックを入れれば支障無し。
機能的には画面に出てくるプロジェクト毎のチェックを入れても同じハズだが・・・こっちは芳しくない結果になった。(大笑
JBossの旧または新バージョンでしかデプロイしないプロジェクトはチェックしない方がいいハズなので、そんなプロジェクトはクローズした後に「「すべてのプロジェクトをクリーン(A)」にチェックを入れて【クリーン】ボタンを押す」といいだろう。
それにしてもEclipseの起動がかなり重くなってきたなぁ~(大笑



地球温暖化・・・でも大雪

と云うことで、本当に地球って温暖化してるのか?実に大いに疑問がある。
ザックりと云えば ・・・
夏場なら「夏がこんなに暑いんだから⇒温暖化してるハズ!」で済んでいたけど、
冬場なら「冬がこんなに寒いんだから⇒温暖化してるのか?」という訳である。
 
実のところ、平均気温の実測値は毎年変動しているし・・・発表するトコロが違えば、実測値自体が結構違ってたりしてるので
(><; ) さっぱりわかんないんですね!
それに10年20年と経過を見て「上昇傾向であるなら温暖化ですよね?」な程度のことですし、また例外もあるので、特定の地域(例えば日本)の次の夏や冬の暑い寒いかどうかとはあまり関係ありません。
さらに、太陽の活動が低下してるので「2030年頃にはプチ氷河期に入るかもしれない」という予想もありますが、それが的を射ていたとしても、次の夏はとっても暑いかもしれません。
リーグ1位目前の強豪チームでも負けることはあるのですから、仕方が無いですよね。(大笑
なかには太陽の活動が低下しても影響は少ないという方もいますが、これは冬の昼間に日が差しても元々気温が随分下がっているので半袖で済むくらいに暖かくなる訳ではないですし、夜も晴れていれば昼間に温まった分だけ放射冷却効果が大きくなりますから、平均すると・・・日が照ってる分だけマイナスになるかもしれない。という風に考えると、まんざら間違いではないのですが、1年中太陽の活動が低下してしまえば、どう考えても地球的規模で寒くなっていきそうです。
なぜ、簡単に結論が出ないのかと云えば、海も大気も「地球規模で考えると十分に大きな保温効果」があり、「その保温効果とは、熱が余れば吸熱し、熱が足りなければ排熱する仕組みなので、温度変化が緩慢になるのです。」そのおかげでボクらは生きていけるので、多少外部からの熱が増減しても、やっていける訳です。それに何かと悪者にされる二酸化炭素の効果はその端数みたいなもので、この端数ばかり気にかけるのはシーソーが動かない様にバランスを取ろうとするようなものです。一方、自然の保温効果は「暑すぎ!台風発現!放熱モード!」という感じに大雑把でしかもスケールが大きいものです。人間の視点からは迷惑千万なのですが、「一応、とても大事な保温効果」なのです。
ですので、多少温暖化や寒冷化が進んでも、極端な状況(海が干上がってしまう等)にならない限り、自然なんだから誤差の範囲と考えるのが「まっとう」な考えじゃないかと思います。
それよりも、夏場なら25度ならいいけど27度になったら暑くて仕事にならない。など「主に人間の一方的な都合による環境のありかた」が大きな問題を抱えていると考えた方がいいでしょう。寒ければ暖房、暑ければ冷房を使う。これにより経済が回るので景気が良くなる。という経済の在り方が一番の問題点なのです。年中居心地の良い気象であれば過ごしやすいのですが、それでは夏服や冬服や冷暖房器具や冷たいアイスはさっぱり売れませんよね。つまり不景気になってしまうのです。そのため、地球の平均気温に0.1度の増減の見込みでもあれば・・・「温暖化」とか「寒冷化」とかを煽るニュースが必要になってくるのです。
一番重要なことは、地域間での温度差こそが大気循環の原因であり、様々な気象現象を引き起こす主因ですから、「温暖化」や「寒冷化」の目安に使われる「地球上の平均気温」が毎年多少増減しても「日々の天候」には何も影響を与えないと思って差し支えないでしょう。
あくまでも「温暖化」や「寒冷化」は「統計上のお話」でしかないので、「温暖化」しつつ「大氷河が出現」しても別段不思議ではないのですから・・・(大笑



ZorinOS

Ubuntuを簡単にインストできるZorinOS。
有料版と無料版がある。
とりあえず、
艦コレのページを開くとflashpluginをインストしなければならないことが判る。
しかし、RPMモジュールをダウンロードしてもrpmコマンドが入っていないのだ。
ところが、sudo apt-get install rpm でrpmコマンドをインストしても、先のflashpluginのrpmファイルはインストに失敗する。
仕方が無いので、sudo apt-get install adobe-flashplugin でFLASHプラグインをインストし、ブラウザを開き直してみると艦コレが遊べるようになる。
メデタシメデタシ。
※但し、Windows10のHyper-VにZorinOSを入れて試したので音は出ない。



CentOS7 PostgreSQL

postgreSQLのインストについてブログに何も残していなかったので・・・

# yum -y install postgresql-server
完了しました!
# postgresql-setup initdb
Initializing database ... OK

この時点で、postgreSQLは、/var/lib/pgsql/にインストされる。

# cd /var/lib/pgsql/data
# cp postgresql.conf postgresql.conf.org
# echo "listen_addresses = '*'" >> /var/lib/pgsql/data/postgresql.conf
# cp pg_hba.conf pg_hba.conf.org
# echo "# PostgreSQL Client Authentication Configuration File" > ./pg_hba.conf
# echo "# ===================================================" >> ./pg_hba.conf
# echo "local all all trust" >> ./pg_hba.conf
# echo "host all all 127.0.0.1/32 trust" >> ./pg_hba.conf
# echo "host all all ::1/128 trust" >> ./pg_hba.conf
# echo "host all all 192.168.***.0/24 md5" >> ./pg_hba.conf
# systemctl start postgresql
# systemctl enable postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.

最後の192.168.***.0/24でLANから繋げる様にする。***部分は、LAN環境によって違うだろう。#ip  aで確認。

# psql -U postgres
 \password
新しいパスワード: *******
もう一度入力してください:*******

でパスワードを設定する。もっともpg_hba.confでtrust設定したIPアドレスならパスワードは何でもいい。
phpPgAdminのインストール

# yum -y install phpPgAdmin
・・・
Require local
を
Require  all granted
に変える
・・・
$conf['servers'][0]['host'] = '';
を
$conf['servers'][0]['host'] = '127.0.0.1';
・・・
他にも繋ぐなら
$conf['servers'][1]['host'] = '192.168.***.***';
の要領で配列を増やす。
※その分画面にサーバーの接続先が増えるが、配列の他の要素も[0]の分だけ追加しなければいけない。
・・・
information_schemaなどを表示する場合は
$conf['show_system'] = true;
※いっぱいゾロゾロと出てくるので普通はfalseでいいだろう。
#systemctl restart httpd

で再設定させて、ブラウザからhttp://192.168.***.***/phpPgAdmin/で開き、postgresでログインする。
あ、WindosなどからPgAdminなどで繋ぐには仮想マシンならホストからもポート5432を解放しないといけないだろう。

# firewall-cmd --add-port=5432/tcp --zone=public --permanent


WordPressのプラグインでハマる

自宅鯖ではアクセス状況を見るには丁度良かったCounterizeII。
こっちに移行してから使っていなかったので有効化してみると・・・
全く反応が無い。http://ssiscirine.perma.jp/を表示すると壁紙しか出ない様になっていた。
似たようなCounterizeを有効化してみると、http://ssiscirine.perma.jp/は普通に表示するものの、管理画面が真っ白になってしまった。
プラグインのフォルダの下のcounterizeとcounterizeiiを消してやっと復旧。
 
 
 



Gemini Lake世代のITXマザボ ASRock J4105-ITX

今でもJ1900のITXマザボを使っている。理由は数ワットのTDPで低発熱でまぁまぁなCPUパワーがあるから自宅鯖みたいに電源入れっぱなしなPCには丁度いい。その頃からCPUはどんどん世代交代していったが、これといって変わった感じがしない。多分メインストリームのCPUを力いっぱいパワーセーブした状態での性能と消費電力というのがほとんど変わっていないのと同じなのだろう。
以前、ITXよりも小さいスティックPCも買ってみたが、使っていると熱が籠って仕方が無いのが難点なので、付けっぱなしPCには向かないから、今ではクリプスの筒の中に眠っている。
J1900の頃は周辺が中途半端な仕様だったが、Gemini Lake世代のITXマザボ J4105-ITXでは周辺のインタフェースがかなり新しくなった。SATAが皆6Gbpsになり、M.2ソケットが付き、USB3.1の数も増え、メモリもSO-DDR4、HDMIも2K(4K?)対応、が随分とグレードアップしているので、SSDやモニターが古くなったら頃に一式丸ごと買い替えるなら丁度良い感じもする。DC電源タイプが出たら・・・買い替えるかも(笑
ちょっと心配なのは投機実行の脆弱性によるSpectre/Meltdownに対するファームウェアアップデート。ATOMベースのCPUなら無関係な気がするけど、J1900がパワーダウンしたら嫌だな・・・
 
 



Android6 アプリを外部ストレージへ移動してみる

手元のSH-M04はAndroid6.0.1しかし内部ストレージは6GB。
買った時はインストールするアプリを絞り込めば大丈夫と思っていたが、毎週のアップデートで、「アプリを削除してください」とメッセージが出る始末。
Android6からはmicroSDメモリも内部メモリ的にフォーマットできるようになっていたので、
https://decoy284.net/2016/03/12/android-6-xperia-z5-sdcard-internal-storage/
を参考に試しにやってみた。
以下、ザックりとした手順。
1.パソコンにAndroid Studio をインストする。
2.ユーザー環境変数のPATHに下記を追加
%USERPROFILE%\AppData\Local\Android\Sdk\platform-tools
3.コマンドラインを開いて、adbを起動してみる。
※adbが見つからなかったら上記の環境変数の設定を見直す。
4.スマホの設定に「開発者向けオプション」を表示させる。
USBケーブルでスマホとパソコンを繋ぐ。
5.「開発者オプション」の画面が出てくるので「ON」にする。
「USBの使用」が出る場合は「ファイル転送」を選択する。
6.パソコンのコマンドラインから
>adb shell

error: no devices/emulators found が出る場合はスマホ側の設定がADB用に変えていないせい。「USBデバッグ」を「ON」にする。これでパソコンに「SH-M04」などとスマホのアイコンが出てくる。
再び >adb shell と入力すると
7.shell@SH-M04:/ $ と出てくるので
sm list-disks と入力すると、

disk:179,64 が返ってくるので ※使用されているスマホやmicroSDによって数字は違うらしいです。

8.sm partition disk:179,64 private と入力すると、SDカードが内部ストレージっぽくフォーマットされる。
9.ここで「開発者モード」はOFFにする。
10.後はスマホの設定のアプリで適当なアプリを選択し、ストレージ(内部ストレージ)を選択。
運がいいと「使用されているストレージ」に【変更】ボタンが現れる。※変更可能なアプリのみ。
ボタンを押してmicroSDに切り替えれば、アプリはmicroSDに移動するはず。
アプリのうち数個しかmicroSDに移動できなかったので、内蔵ストレージがごっそりと空になる訳ではなかった。(残念
その対応アプリを探し出すのもかなり大変。対応アプリを絞りこむアプリもある(AppMgr III等)のでこれを使うといいだろう。
とりあえず、今のkindleは【変更】ボタンが表示されるので、さっそく移動してみた。
本をダウンロードしてみると、どれもmicroSDに落ちているようだ。
これで暫くの間は安泰。
メデタシ、メデタシ。
※Nexus 7とASUS ME572CL(K002R)は、デバイスとパソコンのUSB接続時にエラーが発生し正しいドライバーをインストールできなくなっていた。(いと悲し


JUnit う~む

JUnit4のmockitoとJMockitのサンプルを書こうと思ったが・・・
@Mockや@injectmocksを書き、パラメータ間違いのエラーを解消すると、Internl Error になってしまった。
調べてみると、今のmockito 1.xはpublicなメソッドが対象で、JUnitの使い方にもよるが・・・ほぼ全ての参照先のメソッドをスタブ化した方がマシな現状を考えると適用範囲はかなり狭く、powerMockやJMockitなどが跋扈し、これに呼応しmockito 2.x(β版)が絶賛開発中なので、ビルドパスの順序やimportsの指定などの些末な問題は垂れ流しになっているようだ。そのため、JUnit+powerMockを組み合わせる場合はJUnit+powerMock用にカスタマイズされたIDE(Eclipse等)を後生大事に使うか・・・Eclipseのimports挿入機能をOFFつか・・・コマンドラインでガチガチに書くしかないようだ。
この様な微妙な塩梅が必要な状況ではザックリとjarファイルを管理するmavenでは心もとないので、勢いGradleラブ!ということになるのだろう。
Mockは見た目上は古くからあるEJBのインジェクション機能とそう変わらない。ソース中のアノテーションとClassクラスのメソッドを使い対象クラスのメソッド情報の取得しinvokeをOverloadでフックした先にMatchした条件に応じた反応(doReturnやdoException)するものだ。そのため、一旦インジェクションしてしまったmatchパターンを元の動作に戻せなかったりする。
なので、JUnitから考え直した方がいいんじゃないのかなと思った。
JUnit5なんてのもあるようなんで、こっちに寄り道してみよう。
そのJUnit5でも扱いにくそうなら・・・
自作ラッパーでJUniTestとでも名付ければいいだろう・・・と思った。
 



JUnit4 privateなメソッド

またサンプル。

/**
 *
 */
package sample5;
/**
 * @author ssiscirine
 *
 */
public class Sample5 {
	/**
	 * @param args
	 */
	public static String publicStaticMethod1(String param1) {
		//privateStaticMethod1(param1);
		return param1;
	}
	/**
	 * @param args
	 * @throws Exception
	 */
	@SuppressWarnings("unused")
	private static String privateStaticMethod1(String param1) throws Exception {
		//Sample5 s5 = new Sample5();
		//s5.privateMethod1(param1);
		if (param1 == null) {
			throw new Exception("パラメータがnull");
		}
		return param1;
	}
	/**
	 * @param args
	 */
	public String publicMethod1(String param1) {
		return param1;
	}
	/**
	 * @param args
	 * @throws Exception
	 */
	@SuppressWarnings("unused")
	private String privateMethod1(String param1) throws Exception {
		if (param1 == null) {
			throw new Exception("パラメータがnull");
		}
		return param1;
	}
}

@SuppressWarnings(“unused”)は、privateなメソッドなのに使ってないせい。

/**
 *
 */
package sample5;
import static org.junit.Assert.*;
import static org.junit.Assume.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
import org.junit.runners.MethodSorters;
/**
 * @author slani
 *
 */
//テストケースの名前順に実行する指定
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Sample5Test {
	@Rule
	//テストケースのメソッド名を知りたくて追加。
	public TestName name = new TestName();
	/**
	 * @throws java.lang.Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		//
		System.out.println("setUpBeforeClass() JUnitを開始します。");
	}
	/**
	 * @throws java.lang.Exception
	 */
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		//
		System.out.println("tearDownAfterClass() JUnitを終了します");
	}
	/**
	 * @throws java.lang.Exception
	 */
	@Before
	public void setUp() throws Exception {
		//
		System.out.println(name.getMethodName() + "のための setUp() テストケースの事前処理を行います。");
	}
	/**
	 * @throws java.lang.Exception
	 */
	@After
	public void tearDown() throws Exception {
		//
		System.out.println(name.getMethodName() + "のための" + " tearDown() テストケースの事後処理を行います。");
	}
	//Sample5#publicStaticMethod1用
	/**
	 * {@link sample5.Sample5#publicStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 */
	@Test
	public final void testPublicStaticMethod1_success() {
		Sample5.publicStaticMethod1("parame1");
	}
	//Sample5#privateStaticMethod1用
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateStaticMethod1_Success() throws NoSuchMethodException, SecurityException,
			IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateStaticMethod1", String.class);
		m.setAccessible(true);
		//正常ケース
		String rc = (String) m.invoke(s5, "param1");
		assertEquals("param1", rc);
	}
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 */
	@Test
	public final void testPrivateStaticMethod1_NoSuchMethodException_01() throws SecurityException {
		Sample5 s5 = new Sample5();
		try {
			Sample5.class.getDeclaredMethod("privateStaticMethodX", String.class);
		} catch (NoSuchMethodException e1) {
			assumeNoException(e1.getLocalizedMessage(), e1);
		}
	}
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 */
	@Test
	public final void testPrivateStaticMethod1_NoSuchMethodException_02() throws SecurityException {
		Sample5 s5 = new Sample5();
		try {
			Sample5.class.getDeclaredMethod("privateStaticMethod1", int.class);
		} catch (NoSuchMethodException e1) {
			assumeNoException(e1.getLocalizedMessage(), e1);
		}
	}
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateStaticMethod1_IllegalAccessException()
			throws NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateStaticMethod1", String.class);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, "param1");
		} catch (IllegalAccessException e) {
			assumeNoException(e.getLocalizedMessage(), e);
		}
	}
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateStaticMethod1_IllegalArgumentException()
			throws NoSuchMethodException, SecurityException, IllegalAccessException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateStaticMethod1", String.class);
		m.setAccessible(true);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, 1, 2, 3);
		} catch (IllegalArgumentException e) {
			assumeNoException(e.getLocalizedMessage(), e);
		}
	}
	/**
	 * {@link sample5.Sample5#privateStaticMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateStaticMethod1_InvocationTargetException()
			throws NoSuchMethodException, SecurityException, IllegalAccessException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateStaticMethod1", String.class);
		m.setAccessible(true);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, (String) null);
		} catch (InvocationTargetException e) {
			assumeNoException("target : " + e.getTargetException() + ", msg : " + e.getLocalizedMessage(), e);
		}
	}
	//Sample5#publicMethod1用
	/**
	 * {@link sample5.Sample5#publicMethod1(java.lang.String)} のためのテスト・メソッド。
	 */
	@SuppressWarnings("static-access")
	@Test
	public final void testPublicMethod1_success() {
		Sample5 s5 = new Sample5();
		s5.publicMethod1("parame1");
	}
	//Sample5#privateMethod1用
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateMethod1_Success() throws NoSuchMethodException, SecurityException,
			IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateMethod1", String.class);
		m.setAccessible(true);
		//正常ケース
		String rc = (String) m.invoke(s5, "param1");
		assertEquals("param1", rc);
	}
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 */
	@Test
	public final void testPrivateMethod1_NoSuchMethodException_01() throws SecurityException {
		Sample5 s5 = new Sample5();
		try {
			Sample5.class.getDeclaredMethod("privateMethodX", String.class);
		} catch (NoSuchMethodException e1) {
			assumeNoException(e1.getLocalizedMessage(), e1);
		}
	}
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 */
	@Test
	public final void testPrivateMethod1_NoSuchMethodException_02() throws SecurityException {
		Sample5 s5 = new Sample5();
		try {
			Sample5.class.getDeclaredMethod("privateMethod1", int.class);
		} catch (NoSuchMethodException e1) {
			assumeNoException(e1.getLocalizedMessage(), e1);
		}
	}
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateMethod1_IllegalAccessException()
			throws NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateMethod1", String.class);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, "param1");
		} catch (IllegalAccessException e) {
			assumeNoException(e.getLocalizedMessage(), e);
		}
	}
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateMethod1_IllegalArgumentException()
			throws NoSuchMethodException, SecurityException, IllegalAccessException, InvocationTargetException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateMethod1", String.class);
		m.setAccessible(true);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, 1, 2, 3);
		} catch (IllegalArgumentException e) {
			assumeNoException(e.getLocalizedMessage(), e);
		}
	}
	/**
	 * {@link sample5.Sample5#privateMethod1(java.lang.String)} のためのテスト・メソッド。
	 * @throws SecurityException
	 * @throws NoSuchMethodException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	@Test
	public final void testPrivateMethod1_InvocationTargetException()
			throws NoSuchMethodException, SecurityException, IllegalAccessException {
		Sample5 s5 = new Sample5();
		Method m = null;
		m = Sample5.class.getDeclaredMethod("privateMethod1", String.class);
		m.setAccessible(true);
		//異常ケース
		String rc = null;
		try {
			rc = (String) m.invoke(s5, (String) null);
		} catch (InvocationTargetException e) {
			assumeNoException("target : " + e.getTargetException() + ", msg : " + e.getLocalizedMessage(), e);
		}
	}
}

比較のためpublicなメソッドの呼び出しも混ぜてある。
publicなメソッドなら普通に呼び出せるが、privateなメソッドはクラスの外からは普段見えないものだから・・・
 Method m = {使いたいメソッドのクラス名}.class.getDeclaredMethod(“使いたいメソッドの名前”, 引数1.class, 引数2.class, … );
な感じでprivateなメソッドの情報を取得し、
m.setAccessible(true);
で、privateなメソッドに一時的にクラスの外から使用できるようにしてから・・・
 rc = (戻り値のキャスト) m.invoke(s5, (パラメータ1のキャスト) パラメータ1, (パラメータ2のキャスト) パラメータ2, …);
な感じでメソッドを呼び出す。
しかし、戻り値もパラメータもキャストを使うので、ミスった時はどうなるのか?
調べてみたら・・・ソースが長くなってしまった。
そのcatchの処理も、想定通りのExceptionが通ればいいが最初は大抵想定外な結果になるのでfailではなくassumeNoexceptionを使い、想定内ならIgnore、想定外ならFailになるようにした。
ちょっと判りにくいけど、InvocationTargetExceptionは呼び出し先でExceptionがThrowされた場合に処理されるので、Sample5.javaでパラメータがnullだったらExceptionをThrowしている。

setUpBeforeClass() JUnitを開始します。
testPrivateMethod1_IllegalAccessExceptionのための setUp() テストケースの事前処理を行います。
testPrivateMethod1_IllegalAccessExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateMethod1_IllegalArgumentExceptionのための setUp() テストケースの事前処理を行います。
testPrivateMethod1_IllegalArgumentExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateMethod1_InvocationTargetExceptionのための setUp() テストケースの事前処理を行います。
testPrivateMethod1_InvocationTargetExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateMethod1_NoSuchMethodException_01のための setUp() テストケースの事前処理を行います。
testPrivateMethod1_NoSuchMethodException_01のための tearDown() テストケースの事後処理を行います。
testPrivateMethod1_NoSuchMethodException_02のための setUp() テストケースの事前処理を行います。
testPrivateMethod1_NoSuchMethodException_02のための tearDown() テストケースの事後処理を行います。
testPrivateMethod1_Successのための setUp() テストケースの事前処理を行います。
testPrivateMethod1_Successのための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_IllegalAccessExceptionのための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_IllegalAccessExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_IllegalArgumentExceptionのための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_IllegalArgumentExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_InvocationTargetExceptionのための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_InvocationTargetExceptionのための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_NoSuchMethodException_01のための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_NoSuchMethodException_01のための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_NoSuchMethodException_02のための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_NoSuchMethodException_02のための tearDown() テストケースの事後処理を行います。
testPrivateStaticMethod1_Successのための setUp() テストケースの事前処理を行います。
testPrivateStaticMethod1_Successのための tearDown() テストケースの事後処理を行います。
testPublicMethod1_successのための setUp() テストケースの事前処理を行います。
testPublicMethod1_successのための tearDown() テストケースの事後処理を行います。
testPublicStaticMethod1_successのための setUp() テストケースの事前処理を行います。
testPublicStaticMethod1_successのための tearDown() テストケースの事後処理を行います。
tearDownAfterClass() JUnitを終了します

Junitのビューを見るとxxxxx_success は〇、他はIgnoreになっている。
次は mockかな・・・



スマホにロックをかけたら解除してもSmartWatch2に通知が届かなくなった

スマホを置き忘れたので 盗難対策ツールからロックをかけたら、全ての通知機能がOFFになるのは当然のこと。
しかしロックを解除してもSmartWatch2への通知がOFFのままで、一部を除きSmartWatch2上のアプリのアイコンはディセーブルのまま。ディセーブルになったアプリをアンインストールしてもアイコンがディセーブルのまま残ってしまう。
しかし、SmartWatch2を一旦電源OFFしてONにし直すと、復旧した。メデタシメデタシ。
あ、インストしなおさないと・・・
安価なスマートウォッチやスマートブレスレットに心拍数や血圧や睡眠モニターが付いているのでつい目が移りがち。
しかし画面サイズによってはメールや電話の通知が見にくかったり、モノによっては通知を順送りしかできなかったり、オモチャとしてはそれで充分だと思うけど、順送りした後に誰からだったかな?とか忘れたときに困りそう。もっともnanoSIM入れて単独で使用可能な方がいいけどバッテリーがちょっと心配、全機能使用時で3日ぐらい持つものもあるので日常生活用としては使えそうな気もする。あと、カメラが付いているとスマホ同様に持ち込み禁止対象になってしまう場所もあるのだけどちょっと値段がよいモノはオマケとしてカメラが付いているようでチョット難しい。




top