네이티브 커넥터 테스트하기¶
커넥터용 네이티브 SDK는 다음 3가지 수준의 테스트를 사용합니다.
단위 테스트
통합 테스트
애플리케이션 테스트
이러한 단위 테스트는 다른 애플리케이션의 단위 테스트와 다르지 않습니다. 시스템의 일부는 반환된 값을 쉽게 조작할 수 있도록 모방되었습니다. connectors-native-sdk-test
라이브러리는 SDK와 함께 번들로 제공되는 라이브러리로, Snowflake와의 통신을 담당하는 일부 클래스의 유용한 InMemory
목업을 제공합니다. 이를 통해 개발자는 Snowflake 연결을 사용하지 않고도 로컬 환경에서 단위 테스트를 작성하고 실행할 수 있습니다.
통합 테스트를 수행하려면 Snowflake에 연결하고 Snowflake 오브젝트에 대한 쿼리를 실행해야 합니다. 그러나 이러한 종류의 테스트에서는 사용된 데이터베이스 오브젝트가 독립 실행형입니다. 일부 Snowflake 기능은 Native Apps에서는 사용할 수 없을 수도 있습니다.
애플리케이션 테스트는 Snowflake에 배포된 Native App에서 실행되는 테스트입니다. 이런 종류의 테스트는 시간이 많이 걸리고 비용도 많이 소요될 수 있으므로, 이 방법으로는 몇 가지 주요 시나리오만 테스트하는 것이 좋습니다.
전반적으로, 단위 테스트를 사용하여 최대한 많은 사례를 테스트하고 가장 중요한 경로에 대한 통합 및 애플리케이션 테스트의 수를 최소화하는 것이 좋습니다.
라이브러리 테스트하기¶
위의 설명과 같이, 네이티브 SDK에는 테스트에 유용한 다양한 기능을 제공하는 connectors-native-sdk-test
라이브러리가 있습니다. 주요 기능은 다음과 같습니다.
사용자 지정 어설션
메모리 내 구현
테스트 빌더
어설션¶
라이브러리에서 제공되는 어설션은 AssertJ Fluent Assertions 를 기반으로 합니다. 제공되는 모든 어설션에는 NativeSdkAssertions
클래스 내부에 구현된 패브리케이션 메서드가 있으며, 또한 이 클래스는 원래의 모든 AssertJ 패브리케이션 메서드를 상속하므로 사용자 지정 및 기본 어설션을 모두 사용하려면 한 번만 가져오면 됩니다.
제공되는 어설션 목록:
TestConfigAssert
IngestionProcessAssert
IngestionRunAssert
ConnectorResponseAssert
FullConnectorStatusAssert
ResourceIngestionDefinitionAssert
ResponseMapAssert
TestStateAssert
TaskAssert
TaskPropertiesAssert
VariantAssert
목업¶
라이브러리 내부에서 사용되는 목업은 내부에서 인메모리 맵을 사용하여 데이터베이스 테이블에 저장된 데이터를 모방합니다. 아래 예제와 같이 사용할 수 있습니다.
var customResourceRepository = new InMemoryDefaultResourceIngestionDefinitionRepository();
var key = "test_key";
var resource = createResource(key);
customResourceRepository.save(resource);
var result = customResourceRepository.fetch(key);
var table = new InMemoryDefaultKeyValueTable();
var repository = new DefaultConfigurationRepository(table);
var connectorService = new DefaultConnectorConfigurationService(repository);
제공되는 인메모리 오브젝트 목록:
InMemoryResourceIngestionDefinitionRepository
InMemoryIngestionProcessRepository
InMemoryAppendOnlyKeyValueTable
InMemoryDefaultKeyValueTable
InMemoryReadOnlyKeyValueTable
InMemoryConnectorErrorHelper
InMemoryTaskRef
InMemoryTaskRepository
제공되는 인메모리 Task Reactor 오브젝트 목록:
InMemoryCommandsQueueRepository
InMemoryConfigRepository
InMemoryWorkSelector
InMemoryExpiredWorkSelector
InMemoryWorkItemQueue
InMemoryInstanceRegistryRepository
InMemoryWorkerQueue
InMemoryWorkerQueueManager
InMemoryWorkerRegistry
InMemoryWorkerStatusRepository
InMemoryWorkerCombinedView
InMemoryConfiguredTaskReactorExistenceVerifier
InMemoryNotConfiguredTaskReactorExistenceVerifier
InMemoryTaskReactorInstanceComponentProvider
테스트 빌더¶
테스트 빌더는 SDK 구성 요소를 사용자 지정할 때 사용되는 Builders
와 유사한 도우미 오브젝트입니다. 하지만 테스트 빌더는 모든 내부 서비스를 재정의에 노출시킵니다. Builders
사용에 대한 자세한 내용은 사용자 지정 설명서를 확인하십시오.
new ConfigureConnectorHandlerTestBuilder()
.withErrorHelper(mock(ConnectorErrorHelper.class))
.withInputValidator(mock(ConfigureConnectorInputValidator.class))
.withCallback(mock(ConfigureConnectorCallback.class))
.withConfigurationService(mock(ConnectorConfigurationService.class))
.withStatusService(mock(ConnectorStatusService.class))
.build();