Spring Bootテストコードを実装し、実際にテストを行っているのですが、値からデータが取得できません。
どのようにすればいいのでしょうか。
public class APITest { @Mock APIConfiguration config; @Before public void setup() { MockitoAnnotations.initMocks(this); } @Test public void APIのテスト() { API api = new API(); String publicKey = this.config.getPublicKey(); System.out.println(publicKey); api.setPublicKey(publicKey); assertThat(api.getPublicKey()).isEqualTo(publicKey); } }
@Component @Data @ConfigurationProperties(prefix = "vapid-keys") public class APIConfiguration { private String publicKey; private String privateKey; }
@Data public class API { private String publicKey; }
@RunWith(SpringRunner.class) @SpringBootTest public class APIApplicationTests { @Test public void contextLoads() { } }
2018/11/26追記
public class APIConfigurationTest { @Mock private APIConfiguration config; @Before public void setup() { MockitoAnnotations.initMocks(this); } @Test public void publicKeyのテスト() { when(config.getPublicKey()).thenReturn("public key"); assertThat(config.getPublicKey()).isEqualTo("public key"); } }
ランナーの指定が Spring 向けじゃないからじゃないの?
ご回答ありがとうございます。ソースコードを追加しました。@RunWith(SpringRunner.class)部分の記述をテスト用にする必要があるということでしょうか。
「値からデータが取得できません」は、いったいどの値が取得できないのでしょうか…?
vapid−keysと書いてあるのは、タイポではなく設定ファイルにも同じように書いてありますか?
publicKeyが取得できていない状態です。vapid−keysですが、application.propertiesも設定しており、通常起動では取得できています。
あとで質問文を編集されると良いでしょう。