springでjunitを実行する方法に関して

はいはい、私です。

開発はテストファースト TDDな訳です。
んで、springでどうするの?
って単純な話がありました。

普通にjunitで組むと… Autowired張らないね。
ついでに、resourcesのschema.sqlとか走らないので、DB関係は… 全滅。
取りあえずはPure Java関係でだましだまし、動作確認は単体実行…

Oh No! TDDではない!リファクタリングがこわごわのチキンハートな、前世代的な状態でした。

なので、ちゃんとspring でjunitを動かす方法を調べました。

対象のバージョンは 1.5.4.RELEASEなんだかアノテーションが違ったりするのでなんとなく書いておきます。

mvnで必要だったモジュールは二つ

        
            org.springframework.boot
            spring-boot-test
            1.5.4.RELEASE
        
        
            org.springframework.boot
            spring-boot-starter-test
            1.5.4.RELEASE
        

次に、実際のテストソースです。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.LinkedList;
import java.util.List;

import static org.junit.Assert.assertEquals;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class MailTracerDBTest {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void testFollow(){
        List mailboxList =( jdbcTemplate.query("select * from MAILBOX", new BeanPropertyRowMapper(MailBox.class)));
        List mails = new LinkedList<>();
        for(MailBox mailBox : mailboxList){
            Mail mail = new Mail(mailBox.getMessageId(),mailBox.getInReplayTo(),mailBox.getSubject());
            mails.add(mail);
        }
        MailTracer mailTracer = new MailTracer(mails);
        List resultMails ;


        resultMails = mailTracer.trace("");
        assertEquals(3,resultMails.size());


    }
}

はいはい、見ての通り、JdbcTemplateを使えます。

ネタとしては以上です!
誰かの参考になるとうれしいたけ。