Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak integrovat Spring Cloud Azure s testcontainery k zápisu efektivních integračních testů pro vaše aplikace.
Testcontainers je opensourcová architektura pro poskytování odkládacích, jednoduchých instancí databází, zprostředkovatelů zpráv, webových prohlížečů nebo čehokoli, co může běžet v kontejneru Dockeru. Integruje se s JUnit a umožňuje psát testovací třídu, která může spustit kontejner před spuštěním jakéhokoli testu. Testcontainery jsou zvláště užitečné pro psaní integračních testů, které komunikují se skutečnou back-endovou službou.
Knihovna spring-cloud-azure-testcontainers teď podporuje testování integrace pro následující služby Azure:
Připojení služeb
Připojení služby je připojení k jakékoli vzdálené službě. Automatická konfigurace Spring Bootu může využívat podrobnosti o připojení služby a používat je k navázání připojení ke vzdálené službě. Při tom mají podrobnosti o připojení přednost před všemi vlastnostmi konfigurace souvisejícími s připojením.
Při použití testcontainers můžete automaticky vytvořit podrobnosti připojení pro službu spuštěnou v kontejneru tak, že do pole kontejneru v testovací třídě označíte pole kontejneru.
@ServiceConnection poznámku zpracovává třídy xxxContainerConnectionDetailsFactory zaregistrované v spring.factories. Tyto továrny vytvoří ConnectionDetails bean na základě konkrétní podtřídy Container nebo názvu image Dockeru.
Následující tabulka obsahuje informace o třídách objektu pro vytváření podrobností připojení podporovaných v spring-cloud-azure-testcontainers JAR:
| Třída objektu pro vytváření podrobností připojení | Podrobnosti připojení bean |
|---|---|
CosmosContainerConnectionDetailsFactory |
AzureCosmosConnectionDetails |
StorageBlobContainerConnectionDetailsFactory |
AzureStorageBlobConnectionDetails |
StorageQueueContainerConnectionDetailsFactory |
AzureStorageQueueConnectionDetails |
Nastavení závislostí
Následující konfigurace nastaví požadované závislosti:
<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>
Použití testcontainerů
Následující příklad kódu ukazuje základní použití Testcontainers:
@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() {
// ...
}
}
Abychom mohli používat CosmosDBEmulatorContainer, musíme připravit KeyStore na TLS/SSL. Další informace najdete v modulu Azure Cosmos DB v dokumentaci k testcontainerům. Díky @ServiceConnectiontato konfigurace umožňuje službě Cosmos DB v aplikaci komunikovat se službou Cosmos DB spuštěnou uvnitř kontejneru Docker spravovaného službou Testcontainers. Tato akce se provádí tak, že automaticky definujete AzureCosmosConnectionDetails bean, který pak používá automatická konfigurace služby Cosmos DB a přepisuje všechny vlastnosti konfigurace související s připojením.
Vzorky
Další informace najdete v azure-spring-boot-samples úložišti na GitHubu.