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

Preview:

Citation preview

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

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

自己紹介

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

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

エンジニア絶賛募集中!

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

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

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

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

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

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

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

● Java限定です。

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

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

<% } %>

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

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

<% } %></span>

Seleniumあるある

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

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

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

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

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

// が出力される

Seleniumでテスト

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

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

Mixer2のメリットその1

Mixer2を使ったViewは

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

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

Mixer2

Mixer2の動作原理

XHTML Java ObjectloadHtmlTemplate(

)

saveToString()

Html

Head Body

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

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

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

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

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

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

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

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

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(“ヤマダ”))

つまり?

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

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

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

www.bizreach.co.jp/recruit/

来週!

Recommended