2015/02/18
【お約束】Kotlin + AndroidでHello Worldすぐ出来たよ
カテゴリ:
Android,
IntelliJ IDEA,
Kotlin
最近まではJavaでAndroidアプリを作っていたのですが、
ようやく使いたかったKotlinでAndroidアプリを作り始めました。
ということで、ド定番のHello Worldをやってみました。
2015/02/08
【Selenium2 WebDriver】マルチブラウザのWebDriverをJUnitから実行する
ゴール
とりあえずIEとChromeとFirefoxを簡単に動かせる実装をする
事前準備
・IEとChromeなどのDriver.exeを用意する
ダウンロードはSeleniumのオフィシャルから。
・プロパティファイルを用意する
こんな感じ
#IE driver.ie.exe=C:\\IEDriverServer.exe driver.ie.key=webdriver.ie.driver driver.ie.driverclass=org.openqa.selenium.ie.InternetExplorerDriver #Chrome driver.chrome.exe=C:\\chromedriver.exe driver.chrome.key=webdriver.chrome.driver driver.chrome.driverclass=org.openqa.selenium.chrome.ChromeDriver #Firefox driver.ff.driverclass=org.openqa.selenium.firefox.FirefoxDriver
方法
JUnit4.9から導入された@Ruleを利用して、マルチブラウザ対応をしてみようと思う。
便利ですね。Ruleアノテーション。最近まで全然知らなかったので地味に感動してる。
ソース
まずは簡単なRuleクラスとデータの受け渡し用のstaticなクラスを作る。
(誰かデータの受け渡し方にもっと良い方法があれば教えてください)
public class BrowserRule implements MethodRule { private final String[] paths; public BrowserRule(String... paths) { this.paths = paths; } public Statement apply(final Statement base, FrameworkMethod method, Object target) { return new Statement() { @Override public void evaluate() throws Throwable { for (String path : paths) { ModeContext.setBrowserName(path); base.evaluate(); } } }; } }
public class ModeContext { private static String browserName; private ModeContext () {} public static void setBrowserName(String name) { browserName = name; } public static String getBrowserName() { return browserName; } }
呼び出し側はこんな感じで@Ruleをつけてコンストラクタ引数に任意のブラウザ名を渡すだけ。
keyのバインドがダサいなぁ。。。。
Firefoxに関しては、Systemプロパティの設定が不要らしい。普通に動く。
(ブラウザの設定を変えたりするにはプロファイルの設定とか必要だったりするらしい。)
public class HogeHogeTest { @Rule public BrowserRule browserRule = new BrowserRule("ie"); // ie //public BrowserRule browserRule = new BrowserRule("chrome"); chrome //public BrowserRule browserRule = new BrowserRule("ff"); firefox //public BrowserRule browserRule = new BrowserRule("ie","chrome","ff"); これもできる public WebDriver driver; @Before public void startUpClass() throws Exception { Properties prop = loadProperties(); final String browser = ModeContext.getBrowserName(); final String[] PROP_KEYS = new String[] { "driver." + browser + ".exe", "driver." + browser + ".key", "driver." + browser + ".driverclass"}; if(!browser.equals("ff")) { Path path = Paths.get(prop.getProperty(PROP_KEYS[0])); System.setProperty(prop.getProperty(PROP_KEYS[1]), path.toAbsolutePath().toString()); } Class<?> clazz = Class.forName(prop.getProperty(PROP_KEYS[2])); driver = (WebDriver) clazz.newInstance(); driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS); driver.manage().timeouts().setScriptTimeout(3, TimeUnit.MINUTES); driver.get("http://localhost:8080/hogehoge"); } private Properties loadProperties() { try { ClassLoader loader = Thread.currentThread().getContextClassLoader(); Properties prop = new Properties(); prop.load(loader.getResourceAsStream("DriverSetting.properties")); return prop; } catch (IOException e) { throw new IllegalStateException("failed load DriverSetting.properties ", e); } } }
まとめ
ここまで作るのだけならとても簡単です。
ただ、ここから実際に複数のブラウザでテストを実行すると
テストが赤くなりまくりますね。ブラウザの差異があるのでどうしてもそうなってしまう。
差異とは、画面描画時の位置が微妙に変わりElementNotBisibleExceptionが発生したりとか
そういうことです。そのほかにもブラウザ特有のものとか、、、きっとあるでしょう。
やるなら、はじめに1つのブラウザから始めることを推奨します。
その後マルチブラウザ対応というのが良いのではないでしょうか。
2015/01/30
【Selenium2】WebDriverでハマったところとかTips8選
はじめに
最近、Selenium WebDrvierを利用する機会を得ている。
自動テストはやはり便利。打鍵やるのはバカらしいなって気分になる。
ただ、あんまり難しいことしようとするとどうしても作りこみが必要。
GebというWebDriverのラッパーがかゆいところに手が届く感じらしいので、
次回は検討しようかなぁ。
参考
脱・独自改造! GebでWebDriverをもっとシンプルに
使い始めて感じたことやTIPSをメモがてら残しておこうと思う。
2015/01/13
各言語のWeb REPLサービスまとめ
http://ivandemarino.me/2012/02/27/PhantomJS-REPL-it-s-ready-for-a-taste/より引用
はじめに
「○○言語はどんな環境でも動きますよ」
「△△だから導入が簡単」
とかって言葉は各方面で聞きますが、
なんだかんだ、インストールだのダウンロードだの、少しの手間がかかってしまいます。
新しい言語を覚えてみよう、ちょっとためしにコーディングしようみたいな時
その手間が惜しい。
環境構築したは良いけどすぐ飽きちゃう気がする。だからやめとこっかなー、みたいな。
そういうめんどくさがりの人のために、今回はWeb REPL(またはWebコンソール)を
提供しているサイトをまとめてみました。
Webブラウザと接続できるネットワークさえあれば気軽に試せるなんていいと思いませんか?
2014/12/31
さよなら2014、こんにちは2015
カテゴリ:
ふりかえり
年末にダラける私
今年は、僕にとって割と濃い一年だったというか。
これは振り返らない訳にはいかないというか整理がついていないので、はい。
今年やったこと
・初めての勉強会参加
今年、恥ずかしながら勉強会に初めて参加しました。
関西Kotlin勉強会が初めての勉強会だったのですけど、
新鮮でしたね。
「この人はすごい!」「これは便利だ!」って心が動くってここ最近なかなか無く、
色々と勉強し直すモチベーションになりました。
そこらへんは以前に書いてますね。
【Kotlinかわいいよ】関西Kotlin勉強会に行ってきた
・Kotlinを学び始めた
完全に勉強会をきっかけにしてKotlinを学び始めました。
勉強会に参加したそもそもが腑抜けた自分を叩き直すという理由だったので、
Kotlinどんなもんかなーぐらいの感じだったのですが、そこから割りとハマりました。
今ではかなり好きですし、KotlinでAndroidアプリつくろうと思ってます。
登録:
投稿 (Atom)