我使用JAX-RS编写了一个REST Web服务,它对我选择的特定JAX-RS实现一无所知。我碰巧使用TomEE,这意味着我的JAX-RS实现是ApacheCXF。
我想为Web服务编写单元测试,该服务对JAX-RS实现一无所知。这可能吗?到目前为止,我发现的每个示例都涉及使用来自特定JAX-RS实现的类(用于ApacheCXF的JAXRSClientFactory,Jersey测试框架等)。
我已经开始尝试使用tomee-embedded并且能够测试我的EJB,但它似乎并没有启动REST服务。
答案 0 :(得分:1)
我的解决方案是使用Arquillian与嵌入式TomEE配对。 Arquillian提供了大量功能,但我只是用它来启动/停止嵌入式TomEE。因此,我需要做的就是将其添加到我的pom.xml中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Game">
<AbsoluteLayout android:layout_height="wrap_content" android:id="@+id/GameField" android:layout_width="fill_parent">
<Button android:id="@+id/Button00" android:layout_height="100px" android:layout_width="100px" android:layout_x="5px" android:layout_y="5px" android:text="0" android:textSize="48px" android:background="#000"></Button>
<Button android:id="@+id/Button01" android:layout_height="100px" android:layout_width="100px" android:layout_x="110px" android:layout_y="5px" android:text="D" android:textSize="48px"></Button>
<Button android:id="@+id/Button02" android:layout_height="100px" android:layout_width="100px" android:layout_x="215px" android:layout_y="5px" android:text="3" android:textSize="48px"></Button>
<Button android:id="@+id/Button03" android:layout_height="100px" android:layout_width="100px" android:layout_x="5px" android:layout_y="110px" android:text="B" android:textSize="48px"></Button>
<Button android:id="@+id/Button04" android:layout_height="100px" android:layout_width="100px" android:layout_x="110px" android:layout_y="110px" android:text="6" android:textSize="48px"></Button>
<Button android:id="@+id/Button05" android:layout_height="100px" android:layout_width="100px" android:layout_x="215px" android:layout_y="110px" android:text="5" android:textSize="48px"></Button>
<Button android:id="@+id/Button06" android:layout_height="100px" android:layout_width="100px" android:layout_x="5px" android:layout_y="215px" android:text="4" android:textSize="48px"></Button>
<Button android:id="@+id/Button07" android:layout_height="100px" android:layout_width="100px" android:layout_x="110px" android:layout_y="215px" android:text="1" android:textSize="48px"></Button>
<Button android:id="@+id/Button08" android:layout_height="100px" android:layout_width="100px" android:layout_x="215px" android:layout_y="215px" android:text="2" android:textSize="48px"></Button>
</AbsoluteLayout>
<TextView
android:layout_below="@+id/GameField"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/MoveText"
android:textSize="28px"
android:text="@string/moves_title">
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/MoveText"
android:id="@+id/FeedbackTitleText"
android:text="@string/feedback_title"
android:textSize="28px">
</TextView>
<TextView
android:layout_below="@+id/GameField"
android:layout_toRightOf="@+id/MoveText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/MoveCounter"
android:text="0"
android:textSize="28px"
android:layout_marginLeft="5px"
android:layout_alignBaseline="@+id/MoveText">
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="28px"
android:id="@+id/FeedbackText"
android:layout_alignRight="@+id/GameField"
android:layout_below="@+id/FeedbackTitleText"
android:text="@string/game_feedback_text">
</TextView>
</RelativeLayout>
然后我可以用一些额外的Arquillian东西和普通的JAX-RS写一个JUnit测试:
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>arquillian-tomee-embedded</artifactId>
<version>${tomee.version}</version>
<scope>test</scope>
</dependency>