3

私は個人的なプロジェクトでTDDを使用しています。

テストに失敗せずに何も(コード、XML構成、SQLなど)書くべきではないので、Springをセットアップしたいのであれば、どのような「ユニット」テスト(おそらく統合テストのようなもの)を書くことができるのだろうかと考えていました。 MVC。

そのようなものをspring-context.xmlファイルに書き込みたいとしましょう。

<context:component-scan base-package="com.abc.controllers" />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

「context:component-scan」のテストを追加できますか?

そして、あなたは/あなたが豆「viewResolver」で何をテストするべきですか?

これが私がテストのために書いたコードです:

package com.abc.test.integration;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "file:web/WEB-INF/spring-servlet.xml" })
public class SpringServletContextConfigurationTest {

    @Autowired
    private ApplicationContext applicationContext;

    @Test
    public void TestControllerContextConfigurationIsNotNull() {
        assertNotNull(applicationContext);
    }

    @Test
    public void TestViewBeanResolverExists() {
        assertEquals(true, applicationContext.containsBean("viewResolver"));
    }

}

この「セットアップ」について他にテストできることはありますか?

4

1 に答える 1

2

誰かが言うのを聞くたびにお願いします:

「テストに失敗することなく製品コードを書くことは決してありません」

それらを無視するか、私がしていることを実行してください。彼らが(正しく)言ったと想像してください:

「テストに失敗することなく、ドメイン ロジックを記述しないでください」。

Spring の構成について心配する必要はありません。あなたがそれを間違っているなら、何を推測しますか?アプリを使用しようとしても機能しません。これが発生した場合は、単純に修正して先に進みます。世界のどのテストもここであなたを救いません。TDD に関するこの質問にタグを付けました。ここに秘密があります。TDD はtesting とはほとんど関係がありません。リグレッションを検出するための一連の自動テストを取得できるという事実は、おまけです。TDD は何よりも設計プロセスです。どれだけ自動化しても、手動テストは依然として必要です

スモーク テストとして機能するエンド ツー エンド テストがいくつかある場合は、とにかく Spring 構成を壊すとすぐに気付くでしょう。ソース管理を比較するだけで、変更内容がすぐにわかります。

于 2013-02-17T14:55:30.680 に答える