テンプレートエンジンに
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 Object
loadHtmlTemplate(
)
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/
来週!

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