Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, uygulamalarınız için etkili tümleştirme testleri yazmak için Spring Cloud Azure'ı Testcontainers ile tümleştirme açıklanmaktadır.
Testcontainers, veritabanlarının, ileti aracılarının, web tarayıcılarının veya docker kapsayıcısında çalıştırabileceğiniz hemen hemen her şeyin basit örneklerini sağlamaya yönelik açık kaynak bir çerçevedir. JUnit ile tümleştirildiğinden, testlerden herhangi biri çalışmadan önce kapsayıcı başlatabilecek bir test sınıfı yazmanızı sağlar. Testcontainers, gerçek bir arka uç hizmetiyle konuşan tümleştirme testleri yazmak için özellikle yararlıdır.
spring-cloud-azure-testcontainers kitaplığı artık aşağıdaki Azure hizmetleri için tümleştirme testini destekliyor:
- Azure Cosmos DB
- Azure Blob Depolama
- Azure Kuyruk Depolama
Hizmet bağlantıları
Hizmet bağlantısı, herhangi bir uzak hizmete bağlantıdır. Spring Boot'un otomatik yapılandırması, bir hizmet bağlantısının ayrıntılarını tüketebilir ve bunları kullanarak uzak bir hizmete bağlantı kurabilir. Bunu yaparken bağlantı ayrıntıları, bağlantıyla ilgili yapılandırma özelliklerine göre önceliklidir.
Testcontainers kullandığınızda, test sınıfındaki kapsayıcı alanına ek açıklama ekleyerek kapsayıcıda çalışan bir hizmet için bağlantı ayrıntılarını otomatik olarak oluşturabilirsiniz.
@ServiceConnection ek açıklaması, xxxContainerConnectionDetailsFactoryile kaydedilen spring.factories sınıflar tarafından işlenir. Bu fabrikalar, belirli bir ConnectionDetails alt sınıfını veya Docker görüntü adını temel alan bir Container çekirdeği oluşturur.
Aşağıdaki tabloda, spring-cloud-azure-testcontainers JAR'da desteklenen bağlantı ayrıntıları fabrika sınıfları hakkında bilgi sağlanır:
| Bağlantı ayrıntıları fabrika sınıfı | Bağlantı ayrıntıları çekirdeği |
|---|---|
CosmosContainerConnectionDetailsFactory |
AzureCosmosConnectionDetails |
StorageBlobContainerConnectionDetailsFactory |
AzureStorageBlobConnectionDetails |
StorageQueueContainerConnectionDetailsFactory |
AzureStorageQueueConnectionDetails |
Bağımlılıkları ayarlama
Aşağıdaki yapılandırma gerekli bağımlılıkları ayarlar:
-
cosmos
-
Blob Depolama
-
Kuyruk Depolama
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>azure</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-testcontainers</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-cosmos</artifactId>
</dependency>
Testcontainers kullanma
Aşağıdaki kod örneği, Testcontainers'ın temel kullanımını gösterir:
-
cosmos
-
Blob Depolama
-
Kuyruk Depolama
@SpringBootTest
@Testcontainers
@ImportAutoConfiguration(classes = { AzureGlobalPropertiesAutoConfiguration.class, AzureCosmosAutoConfiguration.class})
public class CosmosTestcontainersTest {
@TempDir
private static File tempFolder;
@Autowired
private CosmosClient client;
@Container
@ServiceConnection
static CosmosDBEmulatorContainer cosmos = new CosmosDBEmulatorContainer(
DockerImageName.parse("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest"));
@BeforeAll
static void setup() {
cosmos.start();
Path keyStoreFile = new File(tempFolder, "azure-cosmos-emulator.keystore").toPath();
KeyStore keyStore = cosmos.buildNewKeyStore();
try {
keyStore.store(Files.newOutputStream(keyStoreFile.toFile().toPath()), cosmos.getEmulatorKey().toCharArray());
} catch (Exception e) {
throw new RuntimeException(e);
}
System.setProperty("javax.net.ssl.trustStore", keyStoreFile.toString());
System.setProperty("javax.net.ssl.trustStorePassword", cosmos.getEmulatorKey());
System.setProperty("javax.net.ssl.trustStoreType", "PKCS12");
}
@Test
void test() {
// ...
}
}
CosmosDBEmulatorContainerkullanmak için TLS/SSL için bir KeyStore hazırlamamız gerekir. Daha fazla bilgi için Testcontainers belgelerindeki Cosmos DB Azure Modülü @ServiceConnectionile bu yapılandırma, uygulamadaki Cosmos DB ile ilgili çekirdeklerin Testcontainers tarafından yönetilen Docker kapsayıcısında çalışan Cosmos DB ile iletişim kurmasını sağlar. Bu eylem, cosmos DB otomatik yapılandırması tarafından kullanılan ve bağlantıyla ilgili yapılandırma özellikleri geçersiz kılınan bir AzureCosmosConnectionDetails çekirdeğini otomatik olarak tanımlayarak gerçekleştirilir.
Örnekleri
Daha fazla bilgi için GitHub'daki azure-spring-boot-samples