Junit4の独学で勉強をしている最中なのですが、 SQLからlong型のデータを取り出しテストするプログラムを作ってみたのですが、結果が<1>とほしい部分に<1L>と表示されてしまいます。
assertThat(list.getId.is((long)1); を実行すれば欲しい結果が出るのですが、それでは可笑しいといわれてしまい、なにを使えばよいかわからなく、どうテストすればいいのかを教えていただければ幸いです。
SprienBoot
1Repository 2 3package com.example.demo.repositories; 4 5import java.util.List; 6 7import org.springframework.data.jpa.repository.JpaRepository; 8import org.springframework.stereotype.Repository; 9 10import com.example.demo.MailAddressData; 11 12@Repository 13public interface MailAddressDataRepository extends JpaRepository<MailAddressData, Long> { 14 15//名前完全一致。 16public List<MailAddressData>findByName(String name); 17 18 19}
SpringBoot
1Spackage com.example.demo; 2 3import java.util.List; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Service; 7 8import com.example.demo.repositories.MailAddressDataRepository; 9 10/** 11 * コントロールクラスから呼び出される処理が書かれている。 12 */ 13@Service 14public class MailAddressService { 15 16 @Autowired 17 MailAddressDataRepository repository; 18 19 /** 20 * 21 * List<MailAddressData> 全件取得 22 * 23 * @return MailAddressDataの全件 24 */ 25 public List<MailAddressData> getAll(){ 26 return repository.findAll(); 27 } 28 /** 29 * mailaddressdataを保存する save 30 * @param mailaddressdata 31 * @return 32 */ 33 public void saveAndFlush(MailAddressData mailaddressdata) { 34 repository.saveAndFlush(mailaddressdata); 35 } 36 /** 37 * 名前完全一致のみの検索。 38 * 39 * @param name 40 * @return nameに紐づくListのMailAddressData 41 */ 42 public List<MailAddressData> findByName(String name) { 43 return repository.findByName(name); 44 } 45 /** 46 * IDで一件のみ取り出す。 47 * @param id 48 * @return 49 */ 50 public MailAddressData findOne(long id) { 51 return repository.getOne(id); 52 } 53 /** 54 * IDを使いデリートする。 55 * @param id 56 */ 57 public void delete(long id) { 58 repository.delete(id); 59 } 60}
Junit4
1package com.example.demo; 2 3import static org.hamcrest.Matchers.*; 4import static org.junit.Assert.*; 5 6import java.util.List; 7 8import javax.sql.DataSource; 9import javax.validation.ConstraintViolationException; 10 11import org.junit.Before; 12import org.junit.Test; 13import org.junit.runner.RunWith; 14import org.springframework.beans.factory.annotation.Autowired; 15import org.springframework.boot.test.context.SpringBootTest; 16import org.springframework.test.context.junit4.SpringRunner; 17 18import com.ninja_squad.dbsetup.DbSetup; 19import com.ninja_squad.dbsetup.Operations; 20import com.ninja_squad.dbsetup.destination.DataSourceDestination; 21import com.ninja_squad.dbsetup.destination.Destination; 22import com.ninja_squad.dbsetup.operation.Operation; 23 24 25@RunWith(SpringRunner.class) 26@SpringBootTest 27public class MailAddressServiceTest { 28 29 @Autowired 30 DataSource dataSource; 31 32 //データ削除対象テーブル指定 33 public static final Operation DELETE_ALL = 34 Operations.deleteAllFrom("mailaddress"); 35 //テストデータの準備 36 public static final Operation INSERT = 37 Operations.insertInto("mailaddress") 38 .columns("id","pseudonym","name","address") 39 .values(1,"あいうえお","あいうえお","aiueo@yahoo.co.jp") 40 .values(2,"かきくけこ","かきくけこ","kakikukeko@yahoo.co.jp") 41 .values(3,"さしすせそ","さしすせそ","sasisuseso@yahoo.co.jp") 42 .build(); 43 44 /** 45 * ここでは更新と削除を毎回行っている。 46 */ 47 @Before 48 public void before(){ 49 //テストDB接続(Application.propertiesに設定されている情報呼び出し) 50 Destination dest = new DataSourceDestination(dataSource); 51 //実行対象 52 Operation ops = Operations.sequenceOf(DELETE_ALL, INSERT); 53 DbSetup dbSetup = new DbSetup(dest, ops); 54 dbSetup.launch(); 55 } 56 57 @Autowired 58 MailAddressService service; 59 60 61 /** 62 * 取得テスト 63 * テスト対象メソッド:getAll() 64 * 想定値:3件 65 * ok 66 */ 67 @Test 68 public void testgetAll1() { 69 List<MailAddressData> list = service.getAll(); 70 assertThat(list.size(), is(3)); 71 } 72 73 /** 74 * 検索件数取得テスト 75 * テスト対象メソッド:getAll() 76 * 想定値:1,"あいうえお","あいうえお","aiueo@yahoo.co.jp" 77 * 想定値:2,"かきくけこ","かきくけこ","kakikukeko@yahoo.co.jp" 78 * 想定値:3,"さしすせそ","さしすせそ","sasisuseso@yahoo.co.jp" 79 * 80 *上でいれたデータが正常に入っているかのテスト 81 * 82 / 83 84 @Test 85 public void testgetAll2() { 86 List<MailAddressData> list = service.getAll(); 87 assertThat(list.get(0).getId(),is(1)); 88 assertThat(list.get(0).getName(), is("あいうえお")); 89 assertThat(list.get(0).getPseudonym(), is("あいうえお")); 90 assertThat(list.get(0).getAddress(), is("aiueo@yahoo.co.jp")); 91 92 assertThat(list.get(1).getId(), is("2")); 93 assertThat(list.get(1).getName(), is("かきくけこ")); 94 assertThat(list.get(1).getPseudonym(), is("かきくけこ")); 95 assertThat(list.get(1).getAddress(), is("kakikukeko@yahoo.co.jp")); 96 97 assertThat(list.get(2).getId(), is("3")); 98 assertThat(list.get(2).getName(), is("さしすせそ")); 99 assertThat(list.get(2).getPseudonym(), is("さしすせそ")); 100 assertThat(list.get(2).getAddress(), is("sasisuseso@yahoo.co.jp")); 101 102 } 103
エラー内容 java.lang.AssertionError: Expected: is <1> but: was <1L> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.junit.Assert.assertThat(Assert.java:956) at org.junit.Assert.assertThat(Assert.java:923) at com.example.demo.MailAddressServiceTest.testgetAll2(MailAddressServiceTest.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/21 04:58
退会済みユーザー
2018/10/21 05:13
2018/10/21 05:23
退会済みユーザー
2018/10/21 05:33
2018/10/21 05:48
2018/10/21 06:00
2018/10/21 09:14
退会済みユーザー
2018/10/21 09:31