2

新しい Spring 構成を利用してプロジェクトを作成しています。いくつかのプロパティを保持する基本クラスがあります。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Basic.class, Protected.class})
public class BaseTest {
  @Autowired(required = false) protected String userName;
  @Autowired(required = false) protected String password;
  @Autowired protected String baseURL;

  @Test
  public void outputData() {
    System.out.println("UserName: " + userName + " Password: " 
                        + password + "Base URL: " + baseURL);
  }
}

@ActiveProfiles("default,protected")
public abstract class ProtectedTest extends BaseTest
{
  @Autowired protected String userName;
  @Autowired protected String password;
}

@Configuration @Profile("default")
public class Basic {
   @Bean public String baseURL() { return "http://www.baseURL.com"; }
}

@Configuration @Profile("protected")
public class Protected {
   @Bean public String userName() { return "userName"; }
   @Bean public String password() { return "password"; }
}

しかし、保護されたテストを実行しようとすると、ベース URL が正しく配線されていないという通知を受け取ります。これは BaseTest を拡張し、両方のプロファイルがアクティブになっているため、baseURL Bean を受信しないのはなぜですか?

4

1 に答える 1

1

それはそうである必要があります、あなたの場合、それは名前によるプロファイルがアクティブで@ActiveProfiles({"default","protected"})あると仮定します、そしてdefault, protecteddefaultprotected

もう1つ、基本クラスのアノテーションはBaseTestによって派生されていないため、テストを実行するProtectedTestには、もう一度配置する必要があり@RunWithます。@ContextConfiguration

于 2012-05-25T18:25:24.853 に答える