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