こんにちは、インフラストラクチャ本部の@nagaseyasuhitoです。このエントリは GREE Advent Calendar 2014 10日目の記事です。昨日はイケメンmoritaさんによる男性エンジニアリングマネージャが長期育休を取った話でした。 エンジニアブログのアカウントは2年くらい前からあるのですが、これが初エントリになります。グリーでは比較的珍しいJavaEEを始めとしたサーバーサイドJavaアプリケーションの開発、SolrやHadoopといったミドルウェアの周辺機能開発や運用などを行っています。どうぞよろしくお願いします。 最近はPvE/PvP/GvGなどユーザー同士がリアルタイムに協調プレイする際、クライアント-サーバー間を常時接続通信で行うゲームが増加しています。このような場合はHTTPのREST APIなど慣れ親しんだプロトコルでは要件を満たしきれないため、Web
アトラクションルームクラス。ルームに人を追加するaddメソッドを持つ。キャパシティは合計20あり、男性の大人は3、女性の大人は2、子供は男女とも1を消費する。キャパシティがいっぱいになったら満員で、それ以上は人を追加できない package spockexample; import org.junit.Before; import org.junit.experimental.runners.Enclosed; import org.junit.experimental.theories.DataPoints; import org.junit.experimental.theories.Theories; import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; import stati
こんにちは、Ameba事業本部ゲームプラットフォーム室の山田(@stormcat24)です。 自分のミッションは主にゲーム部門の開発の改善で、最近はScalaでモナ・・・しながらツールを書いてたりClojureに手を出したりしています。 はじめに ところでみなさんJava書いてますか?サイバーエージェントでは最近node熱が高いのですが、Javaプロジェクトもまだまだ根強く存在します。僕も隙あらばScalaをぶっこもうとしてますが、大人の事情でまだまだJavaを書くシーンも多いのです。 で、そんなテンションが上がりにくいJavaプロジェクトをやっていく上で、せめてテストくらいはなるべくたのしく書きたい!ということで、今のプロジェクトで取り入れた施策を簡単にですが紹介します。 めちゃくちゃ尖った技術を使ってるわけではないですが、これらをやっておけばそれなりに楽しく書けるかなと思ってますので、
JUnit上でJavaScriptのテストを行う方法をご紹介します。 JavaScriptのfunctionも、テストしたい! 画面を作るのはJavaScript、CSSで任せて、サーバサイドはデータのコントロールに専念するのが、最近のはやりのアーキテクチャのような気がしたり、しなかったり。 そんなこんなで、JavaScriptの重要性はますます上がって、JavaScriptがいろいろなロジックを持つことが多くなってきました。 だから、JavaScriptのfunctionも、テストしたい。 Javaなら、できる。JavaScriptのテスト。 Javaは、JavaScriptエンジンを持っているのです。JREに入っているので、別途テスト用にライブラリを取り込む必要はありません。 JUnit上でJavaScriptをテストしてみましょう。 テスト対象のJavaScriptは以下の様なコード
この記事は Selenium Advent Calendar 2013 - Adventar の四日目です。 Selenium について みなさんご存知のとおり Selenium は Web ブラウザの操作を自動化するツールです。 2006 年頃にセンセーショナルに登場しましたが、当時の Selenium は JavaScript で強引にブラウザを操作していたため、JavaScript のセキュリティ制約に大きく影響されるなど、なかなか思い通りに利用することができず、爆発的に普及することはありませんでした。手作業による画面操作、キャプチャ取得に疲弊し切っていたテスト要員たちの期待がとても大きかっただけに、少なくない数の人たちが騙されたと感じていたように思います。 そんな Selenium ですが、2011 年に WebDriver を統合して Selenium2 となり、ブラウザをネイテ
渡辺です。 先日、「JUnitのオブジェクト等価比較を怠けたい!」というスライドが公開されました。「オブジェクトのカスタムアサーションをどのように実現するか」という問題は、ユニットテストを実践していくとよく発生します。この問題に関して、先日のJJUG CCCでも相談されました。また、簡単に書ける仕組みは共有した方が良いのですよね。そんなわけで、cmtestというライブラリにまとめましたので紹介したいと思います。 Objectクラスのequalsメソッド Javaではオブジェクト同士の比較にはObjectクラスのequalsメソッドを利用することが定石です。これはユニットテストのアサーションでも同様です。テストした結果に作られる実測値と、テストの期待値を比較する時、通常はequalsメソッドを利用します。equalsメソッドを使った比較を行うのであれば、定番のassertThat構文を利用で
渡辺です。 最近はユニットテストの導入方法などに関するエントリーが多かったので、今回は実用的な小ネタとして、メソッドにおけるパラメータの正当性検査とユニットテストについて紹介したいと思います。 パラメータの正当性検査 はじめにパラメータの正当性検査について復習しましょう。Javaプログラマであれば読んでないことが許されないEffective Java(第2版P.175、ただし絶版)には次のように記述されています。 ほとんどのメソッドとコンストラクタは、パラメータとして渡される値に関して何らかの制約を持っています。たとえば、インデックス値が負であってはいけないとか、オブジェクト参照がnullであってはいけないというのが普通です。このような制約は明確に文書化すべきであり、メソッド本体の初めに検査することで制約を強制すべきです。これは、エラーが発生したらできるだけ速やかにエラーを検出するようにす
こんにちわ、みけです。 昨日(2013/08/19)に開催されたJJUGのLT大会でLTをしてきました。 LTの内容ですが、 ネタLTとしては大成功(?)でしたが、 まあJavaのLTとしては疑問符が残るものを発表しました。 とりあえず、JavaFXの部分だけ抽出して書きたいと思います。 要望・仕様 ウケ狙いをしたLTの「冒険者の広場』のページについて、次のような要望・仕様になっています。 定期的にWebの情報を取得したい Web APIが公開されていない リンク先のURLがJavascriptでのクリックにバインドされた関数に記載されている スクレイピングツールの候補 Javaで利用できるスクレイピングツールおよびブラウザーは次のものが主に挙げられます NekoHTML/Jsoup HtmlUnit Selenium JavaFXのWebEngine NekoHtml Java1.3以降
Eclipseで設定出来る以下の様なstatic import文の自動補完のようなものをIntelliJ IDEAでも実現したいな〜と思っていたのですが、そのものズバリな手法は見当たらなさそうなのでまずはそれに近いような事を行うためのメモを残しておこうと思います。 EclipseとJUnit4、またはstatic import|Ouobpo そのものズバリな対処法、若しくはより良い手法が見つかった場合は情報を更新する方向で。 エントリ投稿後、何人かの御方から『こういうやり方が(やり方も)ある』というアドバイスを頂きました。どのエントリも大変参考になりました。ありがとうございます! Re: IntelliJ IDEAでJavaのstatic import文に関する効率化設定をLive Templateで実現する - marsのメモ( いまいまさのぶ (TwitterID:@masanobui
これはTDD Advent Calendar jp: 2012参加記事です。 前日(8日目)は、KTZさんの「Rhino.Mocksをちょっとだけ幸せにするお助けクラス」でした。 xUnitによるテスティングフレームワークの共通仕様として、「テストクラス内のテストの実行順序は不定」というのがあります。 とはいえこの仕様をテストを書く上で意識することはあまりありません。テストのあるべき姿として、テストメソッドは他のメソッドから独立しているべきですし、JUnitの場合、ほとんどの実行環境上で、ソースコード上の並びと同一順でテストが実行されていたからです。 しかしJava7(Oracle実装)からは事情が異なります。 package jp.fieldnotes.java; import org.junit.Rule; import org.junit.Test; import org.junit
JUnit4.11がリリースされていたので、リリースノートを和訳してみました。 新機能紹介です。 https://github.com/KentBeck/junit/blob/master/doc/ReleaseNotes4.11.md 個人的にはParameterized Testsの各テストに名前をつけれるようになる機能が一押しです。テストの実行結果が圧倒的に見やすくなります。各機能の詳細についてはまた機会があれば書きたいと思います。 和訳がひどいのは…すみません。間違っていればバシバシ指摘していただければ幸いです。 原文の方が読みやすいかもしれません。orz Summary of changes in version 4.11 Matchers : Hamcrest1.3にアップグレード JUnitは今回のバージョンアップで、最新バージョンのHamcrestを使用するようになりました
寂しがりだから Hamcrest と一緒に使ってあげてね。 やってみる こんな風に書いて。 import org.junit.*; import static org.junit.Assert.*; public class HogeTest { @Test public void hoge() { fail("しぱーい"); } } こうして。 $ javac -cp junit-4.11.jar HogeTest.java $ ls HogeTest.class HogeTest.java junit-4.11.jar だーん。 $ java -cp ./junit-4.11.jar:. junit.textui.TestRunner HogeTest .F Time: 0.003 There was 1 failure: 1) warning(junit.framework.Test
Seleniumを使ったテストは遅いという話をよく聞きます。理由として考えられるのは以下の3つです。 テスト対象のWebアプリケーションが遅いため 遅いテストを書いているため 実際にWebブラウザを動かしているため 1つ目と2つ目は、環境やコードの書き方を変えることで改善可能です。しかし、3つ目はどうでしょうか。実際のブラウザを高速化することなど、そのブラウザの開発者でもない限り不可能です。となると、できることは、可能な限り高速なブラウザを選択することです。 PhantomJSはヘッドレスブラウザです。ヘッドレスブラウザというのはGUIのないブラウザのことで、GUIの描画処理を行わない分、通常のブラウザに比べて高速に動作するという特徴があります。そのため、時間が掛かりがちなWebアプリケーションのGUIテストを高速化するためのソリューションとして注目されています。また、マルチプラットフォー
JUnit4実践入門を献本してもらったので感想など。 JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus) 作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単行本(ソフトカバー)購入: 14人 クリック: 273回この商品を含むブログ (69件) を見る 恥ずかしながら、僕はJenkinsでは未だにJUnit3でテストを書いています。JUnit4の新しい機能も一応は知っているつもりでしたが、こうやって系統だってまとめられていると参考になります。思わぬいい勉強をしてしまいました。 目次を見てみるとわかりますが、この本はJUnitの使い方だけではなくて、DbUnitとかAndroidのテストの話とか、MavenやJenkinsでテストをどう使うかという話にも多くの紙面が割かれていて、広範な分野に手を広げている印象
「JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)」を献本して頂いたので読んでみました。 普段は PHPUnit でテストを書いているので、その本家とも言える JUnit の本は興味津津でした。 実は、今でこそ PHP 三昧の日々ですが、数年前(JDK1.3 とか 1.4 の時代ですが)は Java で開発していたこともあったので、いまどきの Java、JUnit がどうなっているか知りたくもあり、興味深く読み進めることができました。 読んでみて感じた点を挙げてみます。 1. 圧倒的なボリューム まず目次をざっと見た時に感じたのがカバーしている範囲の広さです。正直よく一冊に収まってるなあと:D JUnit の解説からはじまり、JUnit を使ったテストの書き方、ソフトウェアテスト・テスト技法、ユニットテストのパターン、そして JUnit のより
わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く