Entries tagged [test]
Arquillianチュートリアルの埋め込みGlassFish3でテストを走らせるところをやってみる
TweetPosted on Saturday Jan 25, 2014 at 07:42AM in Technology
Test - Arquillianチュートリアルを埋め込みWeldでテスト走らせるところまでやってみるの続きです。今回はチュートリアル[1]の残りのProfileを定義して埋め込みGlassFish3でテストを走らせるところをやってみます。今回もチュートリアルなぞるだけです。ProfileはJBoss AS7のも定義しますが、長くなるので走らせるのは別の項で。
チュートリアルはわかりやすく詳細な解説付きで、pom.xmlの編集等も手を動かしながら学べるので読んだ方がいいです。日本語訳[1]も機械的でなく分かりやすいので普通にこの記事よりもそっちを読んだ方がいいかも。JBoss Forgeを使ったやり方なども紹介されています。
環境
- Eclipse Kepler SR1
- Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900)
- Apple JDK6u65
- OS X 10.9.1
準備
pom.xmlの編集
- 前回使った埋め込みWeld用の定義を新しいProfileに移動
- 埋め込みGlassFish3のProfileを定義
- JBoss AS7のProfileを定義
Profileに定義すると簡単にテストの実行環境を切り替えることができるようになるようです。結果こうなる
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.arquillian.example</groupId> <artifactId>arquillian-tutorial</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>arquillian-tutorial</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.arquillian</groupId> <artifactId>arquillian-bom</artifactId> <version>1.1.2.Final</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.8.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-integration</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>net.avh4.util</groupId> <artifactId>imagecomparison</artifactId> <version>0.0.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.junit</groupId> <artifactId>arquillian-junit-container</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- clip --> <profiles> <profile> <id>arquillian-weld-ee-embedded</id> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-weld-ee-embedded-1.1</artifactId> <version>1.0.0.CR3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-core</artifactId> <version>1.1.5.Final</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.6.4</version> <scope>test</scope> </dependency> </dependencies> </profile> <!-- clip --> <profile> <id>arquillian-glassfish-embedded</id> <dependencies> <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-glassfish-embedded-3.1</artifactId> <version>1.0.0.CR2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.main.extras</groupId> <artifactId>glassfish-embedded-all</artifactId> <version>3.1.2</version> <scope>provided</scope> </dependency> </dependencies> </profile> <!-- clip --> <!-- clip --> <profile> <id>arquillian-jbossas-managed</id> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-managed</artifactId> <version>7.1.1.Final</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.protocol</groupId> <artifactId>arquillian-protocol-servlet</artifactId> <scope>test</scope> </dependency> </dependencies> </profile> <!-- clip --> </profiles> <!-- clip --> </project>
保存するとき自動ビルドを有効にしているとビルドエラーになりますがこれでOKです。
埋め込みWeldでテスト
Profileを選択
プロジェクトを右クリック→Maven→Select Maven Profilesを選択
arquillian-weld-ee-embeddedにチェックを入れてOK
右下の進捗バーが動き出します。暫し眺めているとビルドエラーが消えます
テスト実行
JUnit窓も緑色なので大丈夫そうですね
埋め込みGlassFish3でテスト
Profileを選択
arquillian-weld-ee-embeddedのチェックを外してarquillian-glassfish-embeddedにチェックを入れOK
進捗バーを眺める。1分ぐらいかかります
埋め込みGlassFishのjarがMaven Dependenciesに追加されます。7MBある。
テスト実行
前回同様テストクラスの窓で右クリック→Run As→JUnit Test
コンソール
JUnit窓
コンソールを眺めているとちゃんとGlassFishが走っていることがわかります。実行時間は5秒ぐらい。埋め込みWeldがPOJOの単体テスト並だったのを考えると若干遅いです。
一応ログも貼っておく。Webコンテナもリスナもきちんと立ち上がっているのは興味深い。
2014/01/25 9:49:51 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient 情報: Cannot find javadb client jar file, derby jdbc driver will not be available by default. 2014/01/25 9:49:51 org.hibernate.validator.util.Version <clinit> 情報: Hibernate Validator 4.2.0.Final 2014/01/25 9:49:52 com.sun.enterprise.security.ssl.impl.SecuritySupportImpl checkCertificateDates 致命的: SEC5054: Certificate has expired: [ [ Version: V3 Subject: CN=GTE CyberTrust Root 5, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 Key: Sun RSA public key, 2048 bits modulus: 23741889829347261660812437366387754385443431973861114865490414153884050331745811968523116847625570146592736935209718565296053386842135985534863157983128812774162998053673746470782252407673402238146869994438729551246768368782318393878374421033907597162218758024581735139682087126982809511479059100617027892880227587855877479432885604404402435662802390484099065871430585284534529627347717530352189612077130606642676951640071336717026459037542552927905851171460589361570392199748753414855675665635003335769915908187224347232807336022456537328962095005323382940080676931822787496212635993279098588863972868266229522169377 public exponent: 65537 Validity: [From: Fri Aug 14 23:50:00 JST 1998, To: Thu Aug 15 08:59:00 JST 2013] Issuer: CN=GTE CyberTrust Root 5, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US SerialNumber: [ 01b6] Certificate Extensions: 4 [1]: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:5 ] [2]: ObjectId: 2.5.29.32 Criticality=false CertificatePolicies [ [CertificatePolicyId: [1.2.840.113763.1.2.1.3] [] ] ] [3]: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ Key_CertSign Crl_Sign ] [4]: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 76 0A 49 21 38 4C 9F DE F8 C4 49 C7 71 71 91 9D v.I!8L....I.qq.. ] ] ] Algorithm: [SHA1withRSA] Signature: 0000: 41 3A D4 18 5B DA B8 DE 21 1C E1 8E 09 E5 F1 68 A:..[...!......h 0010: 34 FF DE 96 F4 07 F5 A7 3C F3 AC 4A B1 9B FA 92 4.......<..J.... 0020: FA 9B ED E6 32 21 AA 4A 76 C5 DC 4F 38 E5 DF D5 ....2!.Jv..O8... 0030: 86 E4 D5 C8 76 7D 98 D7 B1 CD 8F 4D B5 91 23 6C ....v......M..#l 0040: 8B 8A EB EA 7C EF 14 94 C4 C6 F0 1F 4A 2D 32 71 ............J-2q 0050: 63 2B 63 91 26 02 09 B6 80 1D ED E2 CC B8 7F DB c+c.&........... 0060: 87 63 C8 E1 D0 6C 26 B1 35 1D 40 66 10 1B CD 95 .c...l&.5.@f.... 0070: 54 18 33 61 EC 13 4F DA 13 F7 99 AF 3E D0 CF 8E T.3a..O.....>... 0080: A6 72 A2 B3 C3 05 9A C9 27 7D 92 CC 7E 52 8D B3 .r......'....R.. 0090: AB 70 6D 9E 89 9F 4D EB 1A 75 C2 98 AA D5 02 16 .pm...M..u...... 00A0: D7 0C 8A BF 25 E4 EB 2D BC 98 E9 58 38 19 7C B9 ....%..-...X8... 00B0: 37 FE DB E2 99 08 73 06 C7 97 83 6A 7D 10 01 2F 7.....s....j.../ 00C0: 32 B9 17 05 4A 65 E6 2F CE BE 5E 53 A6 82 E9 9A 2...Je./..^S.... 00D0: 53 0A 84 74 2D 83 CA C8 94 16 76 5F 94 61 28 F0 S..t-.....v_.a(. 00E0: 85 A7 39 BB D7 8B D9 A8 B2 13 1D 54 09 34 24 7D ..9........T.4$. 00F0: 20 81 7D 66 7E A2 90 74 5C 10 C6 BD EC AB 1B C2 ..f...t\....... ] 2014/01/25 9:49:52 com.sun.enterprise.v3.services.impl.GrizzlyService createNetworkProxy 情報: Network listener https-listener on port 0 disabled per domain.xml 2014/01/25 9:49:52 com.sun.enterprise.v3.services.impl.GrizzlyProxy$2$1 onReady 情報: Grizzly Framework 1.9.46 started in: 41ms - bound to [0.0.0.0:8181] 2014/01/25 9:49:52 com.sun.enterprise.v3.server.AppServerStartup run 情報: GlassFish Server Open Source Edition 3.1.2 (java_re-private) startup time : Embedded (609ms), startup services(630ms), total(1,239ms) 2014/01/25 9:49:52 org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread run 情報: JMX006: JMXStartupService had disabled JMXConnector system 2014/01/25 9:49:53 com.sun.enterprise.security.SecurityLifecycle <init> 情報: SEC1002: Security Manager is OFF. 2014/01/25 9:49:53 com.sun.enterprise.security.SecurityLifecycle onInitialization 情報: SEC1010: Entering Security Startup Service 2014/01/25 9:49:53 com.sun.enterprise.security.PolicyLoader loadPolicy 情報: SEC1143: Loading policy provider com.sun.enterprise.security.jacc.provider.SimplePolicyProvider. 2014/01/25 9:49:53 com.sun.enterprise.security.auth.realm.Realm doInstantiate 情報: SEC1115: Realm [admin-realm] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created. 2014/01/25 9:49:53 com.sun.enterprise.security.auth.realm.Realm doInstantiate 情報: SEC1115: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created. 2014/01/25 9:49:53 com.sun.enterprise.security.auth.realm.Realm doInstantiate 情報: SEC1115: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created. 2014/01/25 9:49:53 com.sun.enterprise.security.SecurityLifecycle onInitialization 情報: SEC1011: Security Service(s) Started Successfully 2014/01/25 9:49:53 com.sun.enterprise.web.WebContainer createHttpListener 情報: WEB0169: Created HTTP listener [http-listener] on host/port [0.0.0.0:8181] 2014/01/25 9:49:53 com.sun.enterprise.web.WebContainer createHosts 情報: WEB0171: Created virtual server [server] 2014/01/25 9:49:53 com.sun.enterprise.web.WebContainer loadSystemDefaultWebModules 情報: WEB0172: Virtual server [server] loaded default web module [] classLoader = WebappClassLoader (delegate=true; repositories=WEB-INF/classes/) SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@711dc088 2014/01/25 9:49:54 org.jboss.weld.bootstrap.WeldBootstrap <clinit> 情報: WELD-000900 SNAPSHOT 2014/01/25 9:49:54 com.sun.enterprise.web.WebApplication start 情報: WEB0671: Loading application [test] at [/test] 2014/01/25 9:49:55 org.glassfish.deployment.admin.DeployCommand execute 情報: test was successfully deployed in 1,930 milliseconds. Hello, Earthling! classLoader = WebappClassLoader (delegate=true; repositories=WEB-INF/classes/) SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@711dc088 PlainTextActionReporterSUCCESSNo monitoring data to report. 2014/01/25 9:49:56 org.glassfish.admin.mbeanserver.JMXStartupService shutdown 情報: JMX001: JMXStartupService and JMXConnectors have been shut down. 2014/01/25 9:49:56 com.sun.enterprise.v3.server.AppServerStartup stop 情報: Shutdown procedure finished 2014/01/25 9:49:56 AppServerStartup run 情報: [Thread[GlassFish Kernel Main Thread,5,main]] exiting
続き
ArquillianチュートリアルのJBoss AS7でテストを走らせるところをやってみる
参考文献
Tags: test
Arquillianチュートリアルを埋め込みWeldでテスト走らせるところまでやってみる
TweetPosted on Friday Jan 24, 2014 at 05:02PM in Technology
JavaEEで結合テストを楽にするツール/フレームワークのArquillianを使ってみます。基本的にはオフィシャルのチュートリアル[2][4]をなぞるだけです。ここでは埋め込みWeld使ったテストが緑色になるところまでやります。
環境
- Eclipse Kepler SR1
- Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900)
- Apple JDK6u65
- OS X 10.9.1
準備
プロジェクトを作る
kyle-no-MacBook:arquillian kyle$ mvn archetype:generate -DarchetypeGroupId=net.avh4.mvn.archetype -DarchetypeArtifactId=java-1.6-archetype Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Interactive mode [INFO] Archetype [net.avh4.mvn.archetype:java-1.6-archetype:0.0.3] found in catalog remote Define value for property 'groupId': : org.arquillian.example Define value for property 'artifactId': : arquillian-tutorial Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': org.arquillian.example: Confirm properties configuration: groupId: org.arquillian.example artifactId: arquillian-tutorial version: 1.0-SNAPSHOT package: org.arquillian.example Y: [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: java-1.6-archetype:0.0.3 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: org.arquillian.example [INFO] Parameter: artifactId, Value: arquillian-tutorial [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: org.arquillian.example [INFO] Parameter: packageInPathFormat, Value: org/arquillian/example [INFO] Parameter: package, Value: org.arquillian.example [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: groupId, Value: org.arquillian.example [INFO] Parameter: artifactId, Value: arquillian-tutorial [INFO] project created from Archetype in dir: /Users/kyle/tmp/arquillian/arquillian-tutorial [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 25 seconds [INFO] Finished at: Fri Jan 24 20:48:27 JST 2014 [INFO] Final Memory: 23M/310M [INFO] ------------------------------------------------------------------------ kyle-no-MacBook:arquillian kyle$
プロジェクトが出来ました
kyle-no-MacBook:arquillian kyle$ ls -l total 0 drwxr-xr-x+ 8 kyle staff 272 1 24 20:48 arquillian-tutorial kyle-no-MacBook:arquillian kyle$
pom.xmlを書き換える
JavaEE6用の依存性を追加します。結果以下のように。本当はJavaEE7でやりたいのですが何かとらぶるのもいやなのでとりあえずチュートリアル通りに。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.arquillian.example</groupId> <artifactId>arquillian-tutorial</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>arquillian-tutorial</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.8.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-integration</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>net.avh4.util</groupId> <artifactId>imagecomparison</artifactId> <version>0.0.2</version> <scope>test</scope> </dependency> <!-- clip --> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <!-- clip --> </dependencies> </project>
Eclipseで開く
FileからImportを開く
Existing Maven Projectsを選択
作ったプロジェクトのディレクトリを選択してFinish
特にエラーもなくプロジェクトができました Java6が探し出されてしまったのがアレですがとりあえず我慢
pom.xmlを編集する
Maven Surefire Pluginはオプションだけど入れとくのをお勧めするとか書いてあるので、とりあえずこれも追加。動かすコンテナはとりあえずWeld EE Embeddedになっている。最終的にはスタンドアロンで動いてるWildFlyにしたいんだけどまあとりあえず。結果こうなる。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.arquillian.example</groupId> <artifactId>arquillian-tutorial</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>arquillian-tutorial</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.arquillian</groupId> <artifactId>arquillian-bom</artifactId> <version>1.1.2.Final</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.8.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-integration</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>net.avh4.util</groupId> <artifactId>imagecomparison</artifactId> <version>0.0.2</version> <scope>test</scope> </dependency> <!-- clip --> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <!-- clip --> <dependency> <groupId>org.jboss.arquillian.junit</groupId> <artifactId>arquillian-junit-container</artifactId> <scope>test</scope> </dependency> <!-- for weld ee embedded start --> <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-weld-ee-embedded-1.1</artifactId> <version>1.0.0.CR3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-core</artifactId> <version>1.1.5.Final</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.6.4</version> <scope>test</scope> </dependency> <!-- for weld ee embedded end --> </dependencies> </project>
クラスを作る
package org.arquillian.example; import java.io.PrintStream; /** * A component for creating personal greetings. */ public class Greeter { public void greet(PrintStream to, String name) { to.println(createGreeting(name)); } public String createGreeting(String name) { return "Hello, " + name + "!"; } }
テストクラスを作る
package org.arquillian.example; import javax.inject.Inject; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Test; import org.junit.Assert; import org.junit.runner.RunWith; @RunWith(Arquillian.class) public class GreeterTest { @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClass(Greeter.class) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } @Inject Greeter greeter; @Test public void should_create_greeting() { Assert.assertEquals("Hello, Earthling!", greeter.createGreeting("Earthling")); greeter.greet(System.out, "Earthling"); } }
クラスとテストクラスの配置
Maven Dependenciesの下にあるjarファイルを数えてみると72個あります。
テスト実行
テストクラスのウインドウで右クリック、Run As→JUnit Test
コンソールへの出力
JUnit窓への出力
やっと@Inject使ったコードが動くとこまできました。準備は大変だったけど、埋め込みコンテナだけにテストの実行速度は普通のJavaクラスの単体テスト並の早さ。長くなったので続きは別の項で。
続き
Arquillianチュートリアルの埋め込みGlassFish3でテストを走らせるところをやってみる
参考文献
Tags: test