JUnit入門

Report
2014年7月26日
@オープンソース・ワークショップ
1.
2.
3.
4.
5.
はじめに [5min]
お知らせ [5min]
特別編 [50min]
オープンプロジェクト [60min]
モクモク会 [60min]
2
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
5.
はじめに
お知らせ
特別編
オープンプロジェクト
モクモク会
3
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
本勉強会では、ADempiereの導入支援として、基礎となる体系的な情報整理とその共有を目指し
ます。コミュニティ参加者には本勉強会の知識をベースとして、より高次の理解に取り組んで頂き、
知り得た内容を、コミュニティに共有頂く、といった”お互いに教えあう場”となればと考えています。
理解度
実利用に求められる
知識に対して、体系的
な整理が行われてい
ない
領域
理解度
以前の課題
勉強会の目標
4
連続勉強会により、
体系的な情報整理
⇒勉強会の知識を基礎と
して、より高次の知見へ展
開
領域
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
勉強会参加者の興味対象は、人によって異なるため、必ずしも参加者全員の知的欲求を満たせると
は限りません。
当活動はボランティアベースであるため、Bさん、Cさんの興味対象であるがAさんの興味対象外の事
柄については、Aさんに期待するのではなく、各自で取り組んでみましょう。
Cさんの興味
Aさんの興味
Bさんの興味
5
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
5.
はじめに
お知らせ
特別編
オープンプロジェクト
モクモク会
6
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
• 特になし
• 翻訳確認
– https://sourceforge.jp/ticket/browse.php?group_id=2599&tid=34053
7
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
• iDempiere Wiki更新
– New Feature for v3.0
• https://sourceforge.jp/ticket/browse.php?group_id=2599&tid=34053
– コンパイル環境構築
• http://wiki.idempiere.org/wen/index.php?title=Installation_in_Eclipse&oldid=5675
• ADempiere Wiki
– Getting Started
• http://www.adempiere.com/JP/Table_of_Contents#Getting_Started
8
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
• iDempiere Wikiのatom feed
– 言語ごとにAtomフィードのURLが異なる。主要な記事はEN配下で作成されている
• Prior Period Adjustment
– 米国会計では、過去月の仕分けを修正する場合は、Retained Earning (資本勘定)
を直接修正
• 8/5にOpen Source Initiativeインタビュー
– OSI directorのTony Wassermanにインタビューを予定しており、SaaSSやAGPL問題
などに対する意見を確認予定
• BitbucketとGitHubの違い
– GitHubはオープンソースとすることを前提とする開発プラットフォームである一方、
Bitbucketはソースを限定公開することも可能。
9
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1. はじめに
2. お知らせ
3. 特別編
1.
2.
3.
4.
Lightening Talk
コードリーディング/初期クライアント作成
JUnit入門
Selenium入門
4. オープンプロジェクト
5. 今後の活動
10
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
IFRSとは
国際財務報告基準(IFRS:International Financial Reporting Standards)とは、国際会計基準審議会(IASB)およびIASBの前
身である国際会計基準委員会(IASC)により設定された会計基準(IASおよびIFRS)およびIFRS解釈指針委員会(IFRIC)
およびIFRICの前身である解釈指針委員会(SIC)により発表された解釈指針(SICsおよびIFRICs)の総称です。
このうち会計基準については、財務諸表の作成および表示に関する概念フレームワーク、IAS第1号からIAS第41号およびIFRS
第1号からIFRS第13号(2011年6月時点)までの個別基準書から構成されています。
IFRS導入によるメリット





財務諸表の透明性、比較可能性の向上
グローバルな資金調達による資本調達コストの削減
投資家向け広報活動(IR)を通じた、海外の投資家やその他の利害関係者とのコミュニケーションの向上と円滑化
海外子会社を含む連結グループを統一された会計基準で管理・業績評価することが可能
IFRS導入を契機としたグループ全体の財務報告プロセスの効率化及び透明化
参考HP
http://www.shinnihon.or.jp/services/ifrs/about-ifrs/
11
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
簡潔にいうと、合弁会社等を設立した場合の投資会社の会計処
理を規定した基準。
ジョイント・ベンチャーからジョイント・アレンジメントへ
新基準では、従来の基準IAS第31号におけるジョイント・ベンチャーの概念をジョイント・アレンジメントという名称に変更し、踏襲
している。従来のジョイントベンチャーの3分類((1)共同支配の営業活動、(2)共同支配の資産、(3)共同支配企業)の概念に代
わって、ジョイント・アレンジメントを(1)ジョイント・オペレーション、(2)ジョイント・ベンチャー の2つに分類している。
ジョイント・アレンジメントとは
ジョイント・アレンジメントは、複数の当事者が共同支配を有する取り決め(アレンジメント)と定義される。
ここで共同支配とは、重要な意思決定は当事者単独ではなく複数の当事者の合意が必要であることを意味する。。例えば、2つ
の当事者がそれぞれ50%ずつ議決権を有し、重要な決議には51%以上の賛成を要する旨の取り決めが行われている場合、い
ずれの当事者も単独では重要な意思決定を行うことができませんので、この場合は共同支配を有しています。
さらに、ジョイント・アレンジメントは、その当事者の権利と義務の性格により「ジョイント・オペレーション」と「ジョイント・ベンチャー」
の2つに分類される。。
12
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
ジョイント・オペレーションとは
ジョイント・オペレーションとは、「アレンジメントを共同支配する当事者が、アレンジメントに関連する個々の資産に対する権利あ
るいは個々の負債に対する義務を有する取り決め」と定義される。会計的には、共同支配を有する当事者は、資産・負債等を
個々に処理する権利を持つ。
ジョイント・ベンチャーとは
ジョイント・ベンチャーとは、「アレンジメントを共同支配する当事者が、アレンジメントの純資産に対する権利を有する取り決め」と
定義される。出資者は、会計的には、純資産に対する権利を持つ。
ジョイント・アレンジメントの分類のまとめ図
ジョイント・アレンジメントの分類
分類の視点:共同支配を有する当事者は、ジョイントアレンジメントの被
投資企業のB/Sの何に対する権利を有しているか?
負債
資産・負債に対する権
利/義務→共同支配事
業(Joint operation)
資産
純資産
13
純資産に対する権利/
義務→共同支配事業
(Joint venture)
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
実務への影響
比例連結の適用不可
比例連結では、ジョイント・ベンチャーの資産・負債・収益・費用のうち自社の持分が財務諸表に合算されていたが、持分法では
これらが全て投資勘定と持分法損益のみで表示されるため、有形固定資産・無形資産・収益等の個々の財務諸表項目の金額
が減少する結果となる。またこれ以外にも、未実現利益消去・債権債務消去等の会計処理が異なるため、財務数値が大きく変
更される可能性がある。
参考HP
http://www.cfonews.jp/?p=5873
14
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1. はじめに
2. お知らせ
3. 特別編
1.
2.
3.
4.
Lightening Talk
コードリーディング/初期クライアント作成
JUnit入門
Selenium入門
4. オープンプロジェクト
5. 今後の活動
15
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
<背景>
• 初期クライアント作成を行ったところ、以前は、自動生成され
るカレンダーの名称が、「XXX Calendar」であったのに対し、
今回は、「XXX カレンダー」と日本になっている。
• 初期クライアント作成は何をやっているのか気になった。
<事前準備>
• ソースは以下手順でeclipseに取り込むことが可能です。
– http://www.adempiere.com/JP/Setup_Development_Environment
16
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
ソースファイルは以下フォルダ構成に格納。パッケージフォルダ上のソースがコンパイル対象 (?)
Base/srcに処理ロジックが実装された主要コードが格納。
<パッケージフォルダ>
• base/src
–
–
–
•
•
•
org.adempiere
org.compiere
org.eevolution
glassfishfacet/src
jbossfacet/src
…
<通常フォルダ>
• adempiere
• base
• client
• data
• doc
• …
17
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
バッチ処理のソースは、org.adempiere.process配下に格納。
• base/src
– org.adempiere.process
• InitialClientSetup.java
• バッチプロセスは、一律SrvProcessを継承
• 画面の入力パラメータがメンバー変数として管理され、prepareメソ
ッドでメンバー変数を取得し、doItでバッチ実行
⇒カレンダーを含むシードデータ作成は、doItに実装されている。
18
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
InitialClientSetup.javaのdoItは以下流れでの実装となってます。
1. 必須項目チェック
2. クライアントおよびユーザーの重複チェック
3. City_ID(都市)が入力されている場合はCity_Name(都市名)
を上書き
4. COAの読み取りチェック
5. セットアップ処理 (Msetup.createClient) <- クライアントの作
成
6. 会計設定 (Msetup.createAccounting) <- 会計設定
7. 出力結果画面表示
19
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
カレンダーデータの作成は、Msetup.createAccountingで実装。createAccountingは以下が実装されて
いる。
1.
2.
3.
4.
5.
6.
7.
8.
カレンダーの作成 (Mcalendar)
勘定科目エレメントの作成
勘定科目の作成
会計スキーマの作成
会計スキーマエレメントの作成
デフォルト勘定科目の作成
GLカテゴリーの作成
Baseドキュメントタイプの作成
20
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
Mcalendarは以下となってます。
public MCalendar (MClient client)
{
super(client.getCtx(), 0, client.get_TrxName());
setClientOrg(client);
setName(client.getName() + " " +
Msg.translate(client.getCtx(), "C_Calendar_ID"));
} // MCalendar
21
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
Translateメソッドの実装はいかとなってます。
public static String translate(Properties ctx, String text)
{
if (text == null || text.length() == 0)
return text;
String s = (String)ctx.getProperty(text);
if (s != null && s.length() > 0)
return s;
return translate (Env.getAD_Language(ctx),
Env.isSOTrx(ctx), text);
} // translate
22
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
getAD_Languageの実装はいかとなってます。
public static String getAD_Language (Properties ctx)
{
if (ctx != null)
{
String lang = getContext(ctx, LANGUAGE);
if (!Util.isEmpty(lang))
return lang;
}
return Language.getBaseAD_Language();
} // getAD_Language
23
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
getAD_Language は、ctxに依存するが、ctx自体は、Msetupのインスタンスの際に、以下のように取得
• MSetup ms = new MSetup(Env.getCtx(),
WINDOW_THIS_PROCESS);
24
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
• 初期クライアント設定の際には、英語の画面で実行した方が
よい?
• モデルはcompiereからあまりかわっていない
• プロセスのロジックを見る場合には、
org.compiere/adempiere.processをあたると、そこから先は、
modelに格納されており、util上のクラスが呼び出される、と
いう階層関係にある。
• context上で、セッション情報が格納されており、どのようにセ
ットアップされるのかは、継続調査が必要。
25
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1. はじめに
2. お知らせ
3. 特別編
1.
2.
3.
4.
Lightening Talk
コードリーディング/初期クライアント作成
JUnit入門
Selenium入門
4. オープンプロジェクト
5. 今後の活動
26
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
JUnitとは
インストール
テストコードの作成
テストコードの実行
27
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
<概要>
• Javaで開発された単体テストの自動化フレームワーク
• Common Public License
<推奨される理由>
• 一度作成すれば素早くテスト可能
• テストコードで仕様がわかる
• 誰でも同じテストを行える
<Junit利用上の課題とその対応>
• 仕様変更ごとにテストコードを作り直さなければならない
–
•
テスト駆動開発では、仕様がテストコードにて伝えられるため、解消される (?)
テストコードの作成に時間がかかる
–
ツールによりテストコードを自動生成できる (機能テストという位置づけで見なせば、十分?)
28
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
以下をインストールする必要がある。
<コンソールでテストする場合>
• JUnitのjarファイル
<Eclipseでテストする場合>
• Eclipseおよび、JUnit plugin (Eclipse Helios以降は標準搭載)
• Quick JUnit (テスティングペアがないクラスを通知し、テストク
ラスを自動生成)
• CodePro (テストコードを自動生成)
• EclEmma (コードカバレッジをビジュアル表示)
29
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
以下のルールにのっとり作成する必要がある。
• テストクラスはpublicクラスとする
• テストメソッドは、org.junit.Testアノテーションを付与したpublic
メソッドとする
• テストメソッドは、戻り値がvoidであり、引数を持たない
• Throuws句は自由に定義可能
30
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
以下流れでテストコードを作成する
1.
2.
3.
4.
テスト対象コードを生成
Srcと並列にtestコードのソースフォルダを作成
Junit Test Caseを作成
テストコードを実装
31
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
32
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
package junit.tutorial;
public class Calculator {
public int multiply(int x, int y){
return x*y;
}
public float divide(int x, int y){
if(y==0)throw new IllegalArgumentException("divide by zero");
return (float) x /(float) y;
}
}
}
33
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
package junit.tutorial.temp;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;
import org.junit.Test;
public class CalculatorTest {
@Test
public void multipyで3と4の乗算結果が取得できる() {
Calculator calc=new Calculator();
int expected = 12;
int actual=calc.multiply(3, 4);
assertThat(actual, is(expected));
}
@Test
public void multipyで5と7の乗算結果が取得できる() {
Calculator calc=new Calculator();
int expected = 35;
int actual=calc.multiply(5, 7);
assertThat(actual, is(expected));
}
@Test (expected=IllegalArgumentException.class)
public void divideで5と0のときIllegalArgumentExceptionを送出する() {
Calculator calc=new Calculator();
calc.divide(5, 0);
}
}
34
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
CodeProから、テストコードを自動生成することも可能です。
1. CodeProから、ソースを自動生成 (ソースを選択の状態で、
右クリック->Code Pro Tools -> Generate Test Caseを選択)
1.
テストコードが自動生成
35
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1. Run As -> Junit Testを実行
1.
実行結果のOK/NG件数が表示
2. EclEmmaを実行
1.
2.
ソースファイルを見ると、通過パスが緑、未通過パスが赤で表示
ソースおよびテストケースの実行カバレッジが表示
36
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1. はじめに
2. お知らせ
3. 特別編
1.
2.
3.
4.
Lightening Talk
コードリーディング/初期クライアント作成
JUnit入門
Selenium入門
4. オープンプロジェクト
5. 今後の活動
37
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
Seleniumとは
インストール
テストコードの作成
テストコードの実行
38
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
<概要>
• Javaで開発されたWebアプリケーションの自動テストツール
• Apache License2.0
• Selenium IDE, Client API, RC, Web Driver, Gridから構成される
• Jenkins, Grails, Maven, Visual Studio, Drupalとの連携が可能
<Selenium利用のメリット>
• 回帰テストの簡易化
• テストの前倒し (開発工程での品質向上)
• テストケースの反復実行
• テストケースおよびバグのレポート作成
• CIの実現
等
39
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
Selenium2は、以下のモジュールから構成される。
(初代Seleniumから変更が発生してます)
モジュール
機能
Selenium IDE
Firefoxのアドオンとして動作し、画面操作を記録し、スク
リプトとして保存。アサーションによる検証内容を定義で
きる。
Selenium WebDriver
プログラム言語からのClient APIコールを受けて、ブラウ
ザのドライバを介して、ブラウザでの処理を実行するもの。
対応言語としては、Python, Ruby, Java, C#。
Selenium RCの後継
Selenium Grid
リモートマシン上 (WebDriverノード) でのテスト実行を実
現するためのサーバーモジュール
40
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
プログラムから、Selenium Web Driverを経由して、テ
ストを制御することもできる。
Webアプリケーション
Webブラウザ
Selenium Web Driver
Test Code
(Java, .Net, Ruby Python)
41
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
Selenium IDEのインストール、実行を以後に記載します
1. Seleniumのサイトにアクセスし、インストーラをダウンロード
1.
http://seleniumhq.org
2. インストールが終わると、ツールメニューから、以下のように
Selenium IDEを起動できるようになります。
42
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
処理ステップの情報が記録される。
Assertもしくは、verifyから始まるコ
マンドで検証ロジックを実装。
画面操作で記録されたものを後か
ら手動編集できる。
43
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
ZK Libraryが利用されているADempiere / iDempiereだと、Element IDが同的に変化するため、画面項
目の値を検証できない (?)
44
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
5.
6.
はじめに
お知らせ
特別編
オープンプロジェクト
今後の活動
モクモク会
45
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
• 準備の関係で、今回はなし
46
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
1.
2.
3.
4.
5.
はじめに
お知らせ
特別編
オープンプロジェクト
モクモク会
47
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.
著作権
本書の記載内容は、著作権の対象となっています。
本書の内容の全部または一部について、私的使用または引用等著作権法上認められた行為として、適
宜の方法により出所を明示することにより、引用・転載複製を行うことができます。
免責事項
本書に記載されている情報の正確さについては万全を期しておりますが、利用者が本書の情報を用い
て行う一切の行為について、何ら責任を負うものではありません。
その他
本書は、予告なしに内容を変更またはSourceForge.jpからの公開の取りやめを行う場合がありますが、あ
らかじめご了承ください。
本書の記載内容に関するお問い合わせ先
Open Source ERP Users Group
http://www.oss-erp.jp/
48
Copyright © 2013 Open Source ERP Users Group
All Rights Reserved.

similar documents