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(){ ListmailboxList =( 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を使えます。
ネタとしては以上です!
誰かの参考になるとうれしいたけ。