Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan integrálhatja a Spring Cloud Azure-t Testcontainers az alkalmazások hatékony integrációs tesztjeinek megírásához.
Testcontainers egy nyílt forráskódú keretrendszer, amely lehetővé teszi az adatbázisok, üzenetközvetítők, webböngészők és szinte bármi egyszerű példányát, amely egy Docker-tárolóban futtatható. Integrálható a JUnittal, lehetővé téve egy tesztosztály írását, amely elindíthat egy tárolót a tesztek futtatása előtt. A tesztkontainerek különösen hasznosak olyan integrációs tesztek írásához, amelyek valós háttérszolgáltatással kommunikálnak.
A spring-cloud-azure-testcontainers kódtár mostantól támogatja az integrációs tesztelést a következő Azure-szolgáltatásokhoz:
Szolgáltatáskapcsolatok
A szolgáltatáskapcsolat bármely távoli szolgáltatáshoz kapcsolódik. A Spring Boot automatikus konfigurációja felhasználhatja a szolgáltatáskapcsolat részleteit, és segítségével kapcsolatot létesíthet egy távoli szolgáltatással. Ennek során a kapcsolat részletei elsőbbséget élveznek a kapcsolattal kapcsolatos konfigurációs tulajdonságokkal szemben.
A Testcontainers használatakor automatikusan létrehozhat kapcsolatadatokat egy tárolóban futó szolgáltatáshoz a tesztosztály tároló mezőjének megjegyzésével.
A @ServiceConnection jegyzetet a xxxContainerConnectionDetailsFactoryregisztrált spring.factories osztályok dolgozzák fel. Ezek a gyárak létrehoznak egy ConnectionDetails babot egy adott Container alosztály vagy a Docker-rendszerkép neve alapján.
Az alábbi táblázat a spring-cloud-azure-testcontainers JAR-ban támogatott kapcsolati adatok gyári osztályairól nyújt tájékoztatást:
| Kapcsolat részletei gyári osztály | Kapcsolat részletei bean |
|---|---|
CosmosContainerConnectionDetailsFactory |
AzureCosmosConnectionDetails |
StorageBlobContainerConnectionDetailsFactory |
AzureStorageBlobConnectionDetails |
StorageQueueContainerConnectionDetailsFactory |
AzureStorageQueueConnectionDetails |
Függőségek beállítása
A következő konfiguráció állítja be a szükséges függőségeket:
<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>
Tesztkontainerek használata
Az alábbi példakód a Testcontainers alapszintű használatát mutatja be:
@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() {
// ...
}
}
A CosmosDBEmulatorContainerhasználatához elő kell készítenünk egy KeyStore TLS/SSL-hez. További információ: Cosmos DB Azure-modul a Testcontainers dokumentációjában. A @ServiceConnectionlehetővé teszi, hogy a Cosmos DB-hez kapcsolódó babok az alkalmazásban kommunikáljanak a Testcontainers által felügyelt Docker-tárolóban futó Cosmos DB-vel. Ezt a műveletet úgy hajthatja végre, hogy automatikusan definiál egy AzureCosmosConnectionDetails babot, amelyet aztán a Cosmos DB automatikus konfigurációja használ, felülírva a kapcsolattal kapcsolatos konfigurációs tulajdonságokat.
Minták
További információ: azure-spring-boot-samples adattár a GitHubon.