1

春のアプリケーションのjunitテストを行う必要があり、それはmongoデータベースで行われます。junit テストを spring と mongodb に組み込んだ経験はありません。どんな返信でも、私にとって非常に役に立ちます...

よろしくお願いします。

4

3 に答える 3

0

pom.xml ファイルの構成は次のとおりです。

<properties>
    ....
    <junit.version>4.10</junit.version>
    ....
</properties>
<dependencies>
    .....
    <!-- Test dependencies -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version><!-- JUNIT CHANGES -->
        <scope>test</scope>         
    </dependency>

    <dependency>
        <groupId>de.flapdoodle.embed</groupId>
        <artifactId>de.flapdoodle.embed.mongo</artifactId>
        <version>1.26</version>
        <scope>test</scope>
    </dependency>            

    <!-- Mockito --><!-- JUNIT MOCKITO DEPENDENCY ADDED -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.8.4</version>
    </dependency>
    <!-- Mockito -->
     ......
</dependencies>
<build>
      ....
      <plugins>
          ......
           <!-- JUNIT PLUGIN CODE ADDED-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
              <source>1.5</source>
              <target>1.5</target>
            </configuration>
        </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.14</version>
            <configuration>
        <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit47</artifactId>
                <version>2.14</version>
              </dependency>
            </dependencies>
          </plugin>
        <!-- END OF JUINT CODE -->
            .....
      </plugins>
      <sourceDirectory>src/main/java</sourceDirectory>
      <testSourceDirectory>src/test/junit</testSourceDirectory>
</build>....

pom構成を設定したら、次の手順に従ってテストケースコードを実行します

  • STS などの IDE を使用していると仮定すると、対応するクラスを右クリックし、Junit Test Case をクリックして、src/test/java パスの下にクラスを作成します。
  • スプリング コントローラー クラスを実装するには、まず、メソッド内の対応するクラスのテスト ケース コードから値を初期化するなど、すべてのオブジェクトを初期化しますsetUp()
  • 次に、テスト ケースから対応するメソッドを呼び出し、対応するメソッドが string/int/boolean などの値を返す場合は、適切な junit アサーション チェックインを実行します。

以下のように:

@Test
    public void testSave() {
    MessageValue messageValue = saveController.saveValue(value+"::Test", model);
    Query query = new Query(Criteria.where("value").is("Test").and("_id").is(id));
    SaveValue saveValueThis = template.findOne(query, Save.class);
    assertEquals("Success", messageValue.getMessage());
    // delete the saved value at the end of test case
        testDelete(); 
}

他の画面へのリダイレクトであるUIページが返された場合は、以下のように確認してください。

mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();
    mockMvc.perform(get("/request/url").accept(MediaType.ALL))
    .andExpect(status().isOk());
  • 最後に、テスト ケースtearDown()メソッドで、初期化された値をリセットします。
于 2013-07-22T07:23:06.770 に答える