17

Click here to load reader

テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Embed Size (px)

Citation preview

Page 1: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Selenium勉強会@サイボウズ2015-10-20

Page 2: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

自己紹介

● わたなべ● Javaエンジニア● (株)ビズリーチ

- 選ばれた人だけの、会員制転職サイト -● Project Mixer2主宰(コミッタ少ないけど)● twitter: @nabedge● https://github.com/nabedge

Page 3: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

エンジニア絶賛募集中!

● Java書きたい人● Scala書きたい人● Android/Swiftな人● なんか知らんけど渋谷のビーチで

ピザとビールくらいなら食いに行ってもいいぜという人

● See http://www.bizreach.co.jp/recruit/○ あるいは @nabedge までメンション

Page 4: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

とりあえず勉強会に顔出してみるとか

キーワード「勉強会 d-cube」「渋谷java」

Page 5: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Mixer2は、Javaのテンプレートエンジンです

Page 6: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

● 今日はSeleniumの勉強会なのでテストからのアプローチ。

● Java限定です。

Page 7: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

このJSPをSeleniumでテストする?

こんにちは <% if (name == null) { %> ゲストさん <% } else { %> <%= name %>さん

<% } %>

Page 8: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

こうしておいてほしいですよね

こんにちは<span id=”name”> <% if (name == null) { %> ゲストさん <% } else { %> <%= name %>さん

<% } %></span>

Page 9: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Seleniumあるある

このタグにidかclassをつけておいてくれれば、

ややこしいxpathを書かずに済むのになあ

Page 10: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

さっきのをMixer2で作っていたら

テンプレート(HTML, CSS)こんにちは<span id=“name”>ゲスト</span>さん

ビュークラス(Java)Span span = html.getById(“name”, Span.class);span.replaceInner(“ヤマダ”);// これで <span id=“name”>ヤマダ</span>さん

// が出力される

Page 11: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Seleniumでテスト

String name = driver.findElement(By.id(“name”)).getText();

assertEquals(name, is(“ヤマダ”));

Page 12: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Mixer2のメリットその1

Mixer2を使ったViewは

id,class属性がついたタグが自然と多くなるので

Seleniumでのテストコードも書きやすくなる

Page 13: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

Mixer2

Mixer2の動作原理

XHTML Java ObjectloadHtmlTemplate(

)

saveToString()

Html

Head Body

<html> <head> …….. </head> <body> …….. </body></html>

Mixer2は双方向型のXHTML/Objectマッパー

Page 14: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

さっきのをもう一度よーく見ると

Span span = html.getById(“name”, Span.class);span.replaceInner(“ヤマダ”);

String name = driver.findElement(By.id(“name”)).getText();

assertEquals(name, is(“ヤマダ”));

似たようなコードで似たようなことをやってる!

Page 15: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

だったらこうしてしまうのもアリ

Span span = html.getById(“name”, Span.class);span.replaceInner(“ヤマダ”);

String src = driver.getPageSource()Html html = mixer2Engine.loadHtmlTemplate(src)Span span = html.getById(“name”,Span.class)String name = span.getContent().get(0).toString()assertEquals(name, is(“ヤマダ”))

Page 16: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

つまり?

● テスト対象のコード(View)● Seleniumによるテストコード

両方で同じテクノロジー(Mixer2)を使って学習コストを削減できる

Page 17: テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話

おしまい。ありがとうございました!

www.bizreach.co.jp/recruit/

来週!