concrete5に管理者ログインをしても、画面にメニューバーが出てこない
concrete5のインストールが無事に完了し、トップページに遷移。さあ管理画面を開くぞ!と思っても、普通表示されるはずの下画面のようなメニュー画面が出てこない。
[画像]
どうやらこの問題、編集のメニューバーをJavaScriptで取ってきて表示させる際に、必要な環境が足らずに起こる問題のよう。
/index.php/tools/required/page_controls_menu_js?cID=1&cvID=&btask=&ts=0
にアクセスすると
Notice: Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core in ~
というエラーが表示されていて、JavaScriptでのページ制御が上手くいってない様子。
PCREの設定に問題があるらしく、少なくとも下記の環境ではダメ、とのこと。
# pcretest -C
PCRE version 6.6 06-Feb-2006 Compiled with UTF-8 support No Unicode properties support Newline character is LF Internal link size = 2 POSIX malloc threshold = 10 Default match limit = 10000000 Default recursion depth limit = 10000000 Match recursion uses stack
なので、
/index.php/dashboard/
から管理画面を開き、
管理画面 > システムと設定 > サーバー設定一覧 > デバッグ設定
で「来訪者からエラーを隠します。」にチェックを入れて、もう一度トップを表示させて、解決できました。
Volleyで通信エラー時のテストを実施する
Volleyライブラリを使った通信エラー時のテストの書き方
com.android.volley.toolbox.HttpStackを使った、サーバーエラーをレスポンスとして返すクラスを作成
private class HttpStackServerError implements HttpStack { @Override public HttpResponse performRequest(final Request request, final MapadditionalHeaders) throws IOException, AuthFailureError { try { Thread.sleep(1000); } catch (InterruptedException e) { } HttpResponse response = new BasicHttpResponse(new BasicStatusLine(HttpVersion.HTTP_1_1, 500, "Internal Server Error")); List responseHeaders = getHeaders(); response.setHeaders(responseHeaders.toArray(new Header[responseHeaders.size()])); return response; } } private List getHeaders() { ArrayList headers = new ArrayList (); /** 返したいヘッダの内容を記述 */ return headers; }
これをRequestQueueのコンストラクタのnetworkの部分で渡してあげる
RequestQueue requestQueue = new RequestQueue(new NoCache(), new BasicNetwork(new HttpStackServerError())); StringRequest stringRequest = new StringRequest(Request.Method.GET,url,listener,errorListener); requestQueue.add(stringRequest);
こうすることで、requestQueueがInternal Server Errorで返ってきたと判断し、stringRequestのerrorListenerを通らせることができる。
その他、sleepさせ続けてレスポンスを返させなければタイムアウトのテストになる模様。
参考
Unit testing with Android volley - stackoverflow
はてなにおける Android アプリのソフトウェアテスト - slide share
スライド22枚目、テスト用のNetworkクラスを作ってもできるらしい。
CheckStyleの"Unable to get class information for <Custom Exception Class>"をチェックしないようにする
Android Studioの野良Check Styleプラグインを使ってコードのスタイルチェックをしているんですが、"unable to get class information for
"Unable to get class~"のエラーを吐いているのは、"RedundantThrows"というチェックプラグイン。どうやらコイツ、冗長なThrowをしていないかチェックしている模様。(参考:http://www.limy.org/program/java/checkstyle/coding.html)
というわけで、"RedundantThrows"のプラグインをCheck Styleから除去して終了です。チェックを外してしまったので、冗長なThrowを書かないように意識しましょう。