К основному содержанию
скилл CX Codex

langchain4j-testing-strategies — скилл для Claude Code: тесты

Помогает тестировать Java-приложения на LangChain4j: от моков ChatModel до RAG-пайплайнов и интеграции с Testcontainers.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add giuseppe-trisciuoglio/developer-kit --skill langchain4j-testing-strategies -a claude-code
Открыть на GitHub

Что делает langchain4j-testing-strategies

Скилл подсказывает, как строить модульные тесты с моками ChatModel, проверять AiServices, retrieval chains, RAG-сценарии и вызовы инструментов. Для зависимостей рассматривает langchain4j-test, testcontainers, mockito и assertj, а для интеграционных проверок показывает подход с реальными сервисами в контейнерах.

Внутри есть отдельные материалы по модульным и интеграционным тестам, потоковой выдаче, памяти, обработке ошибок и тестовой пирамиде. Для внешних моделей советует сначала проверить здоровье контейнера и ответ модели, а в модульных тестах не обращаться к реальным API. Интеграционные тесты требуют Docker, поэтому это повод проверить локальный Docker daemon до настройки сценариев.

Скилл рассчитан на Java-код с LangChain4j и подходит для Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode.

Какие задачи решает

  • замокать ответы ChatModel в модульных тестах
  • проверить работу AiServices без внешнего API
  • протестировать retrieval chains и RAG-сценарии
  • запустить интеграционные тесты через Testcontainers
  • проверить обработку ошибок и граничные случаи

Примеры запросов агенту

  • Настрой модульный тест для AiServices с моком ChatModel и детерминированным ответом.
  • Собери интеграционный тест RAG с OllamaChatModel, OllamaEmbeddingModel и Testcontainers.
  • Добавь проверки ошибок, тайм-аутов и готовности контейнера в тесты LangChain4j.

Как установить langchain4j-testing-strategies

1Через Skills CLI (Vercel)

npx skills add giuseppe-trisciuoglio/developer-kit --skill langchain4j-testing-strategies -a claude-code

2Вручную: положить файлы

~/.claude/skills/langchain4j-testing-strategies/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/langchain4j-testing-strategies/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о langchain4j-testing-strategies

Как установить langchain4j-testing-strategies в Claude Code?

Выполните npx skills add giuseppe-trisciuoglio/developer-kit --skill langchain4j-testing-strategies -a claude-code, затем повторите эту команду и проверьте файл ~/.claude/skills/langchain4j-testing-strategies/SKILL.md.

Что делает langchain4j-testing-strategies?

Скилл помогает проектировать модульные, интеграционные и end-to-end тесты для LangChain4j. Он охватывает моки AI-моделей, RAG, retrieval chains, guardrails и тестирование сервисов в контейнерах.

Что нужно для интеграционных тестов LangChain4j?

Для сценариев с Testcontainers нужен Docker. В тестах также могут использоваться langchain4j-test, testcontainers, mockito и assertj.

Исходный текст

SKILL.md · MIT
---
name: langchain4j-testing-strategies
description: Provides unit test, integration test, and mock AI patterns for LangChain4j applications. Creates mock LLM responses, tests retrieval chains, validates RAG workflows, and implements Testcontainers-based integration tests for Java AI services. Use when unit testing AI services, integration testing LangChain4j components, mocking AI models, or testing LLM-based Java applications.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---

# LangChain4J Testing Strategies

## Overview

Patterns for unit testing with mocks, integration testing with Testcontainers, and end-to-end validation of RAG systems, AI Services, and tool execution.

## When to Use

- **Unit testing AI services**: When you need fast, isolated tests for services using LangChain4j AiServices
- **Integration testing LangChain4j components**: When testing real ChatModel, EmbeddingModel, or RAG pipelines with Testcontainers
- **Mocking AI models**: When you need deterministic responses without calling external APIs
- **Testing LLM-based Java applications**: When validating RAG workflows, tool execution, or retrieval chains

## Instructions

### 1. Unit Testing with Mocks

Use mock models for fast, isolated testing. See `references/unit-testing.md`.

```java
ChatModel mockModel = mock(ChatModel.class);
when(mockModel.generate(any(String.class)))
    .thenReturn(Response.from(AiMessage.from("Mocked response")));

var service = AiServices.builder(AiService.class)
        .chatModel(mockModel)
        .build();
```

### 2. Configure Testing Dependencies

Setup Maven/Gradle dependencies. See `references/testing-dependencies.md`.

- `langchain4j-test` - Guardrail assertions
- `testcontainers` - Containerized testing
- `mockito` - Mock external dependencies
- `assertj` - Fluent assertions

### 3. Integration Testing with Testcontainers

Test with real services. See `references/integration-testing.md`.

```java
@Testcontainers
class OllamaIntegrationTest {
    @Container
    static GenericContainer<?> ollama = new GenericContainer<>(
        DockerImageName.parse("ollama/ollama:0.5.4")
    ).withExposedPorts(11434);

    @Test
    void shouldGenerateResponse() {
        // Verify container is healthy
        assertTrue(ollama.isRunning());
        await().atMost(30, TimeUnit.SECONDS)
            .until(() -> ollama.getLogs().contains("API server listening"));

        ChatModel model = OllamaChatModel.builder()
                .baseUrl(ollama.getEndpoint())
                .build();

        // Verify model responds before running tests
        assertDoesNotThrow(() -> model.generate("ping"));

        String response = model.generate("Test query");
        assertNotNull(response);
    }
}
```

### 4. Advanced Features

Streaming, memory, error handling patterns in `references/advanced-testing.md`.

### 5. Testing Workflow

Follow the testing pyramid from `references/workflow-patterns.md`:

- **70% Unit Tests**: Fast, isolated with mocks
- **20% Integration Tests**: Real services with health checks
- **10% End-to-End Tests**: Complete workflows

```
70% Unit Tests ─ Mock ChatModel, guardrails, edge cases
20% Integration Tests ─ Testcontainers, vector stores, RAG
10% End-to-End Tests ─ Complete user journeys
```

### Troubleshooting

- **Container fails to start**: Check Docker daemon is running, verify image exists, increase timeout
- **Model not responding**: Verify baseUrl is correct, check container logs, ensure model is loaded
- **Test timeout**: Increase `@Timeout` duration for slow models, check container resource limits
- **Flaky tests**: Add retry logic or health checks before assertions

## Examples

### Unit Test

```java
@Test
void shouldProcessQueryWithMock() {
    ChatModel mockModel = mock(ChatModel.class);
    when(mockModel.generate(any(String.class)))
        .thenReturn(Response.from(AiMessage.from("Test response")));

    var service = AiServices.builder(AiService.class)
            .chatModel(mockModel)
            .build();

    String result = service.chat("What is Java?");
    assertEquals("Test response", result);
}
```

### Integration Test with Testcontainers

```java
@Testcontainers
class RAGIntegrationTest {
    @Container
    static GenericContainer<?> ollama = new GenericContainer<>(
        DockerImageName.parse("ollama/ollama:0.5.4")
    );

    @BeforeAll
    static void waitForContainerReady() {
        await().atMost(60, TimeUnit.SECONDS)
            .until(() -> ollama.getLogs().contains("API server listening"));
    }

    @Test
    void shouldCompleteRAGWorkflow() {
        assertTrue(ollama.isRunning());

        var chatModel = OllamaChatModel.builder()
                .baseUrl(ollama.getEndpoint())
                .build();

        var embeddingModel = OllamaEmbeddingModel.builder()
                .baseUrl(ollama.getEndpoint())
                .build();

        var store = new InMemoryEmbeddingStore<>();
        var retriever = EmbeddingStoreContentRetriever.builder()
                .chatModel(chatModel)
                .embeddingStore(store)
                .embeddingModel(embeddingModel)
                .build();

        var assistant = AiServices.builder(RagAssistant.class)
                .chatLanguageModel(chatModel)
                .contentRetriever(retriever)
                .build();

        String response = assistant.chat("What is Spring Boot?");
        assertNotNull(response);
        assertTrue(response.contains("Spring"));
    }
}
```

## Best Practices

- Use `@BeforeEach`/`@AfterEach` for test isolation
- Never call real APIs in unit tests; use mocks
- Include `@Timeout` for external service calls
- Test both success and error handling scenarios
- Validate response coherence and edge cases

## Common Patterns

### Mock Strategy
```java
ChatModel mockModel = mock(ChatModel.class);
when(mockModel.generate(anyString())).thenReturn(Response.from(AiMessage.from("Mocked")));
when(mockModel.generate(eq("Hello"))).thenReturn(Response.from(AiMessage.from("Hi")));
when(mockModel.generate(contains("Java"))).thenReturn(Response.from(AiMessage.from("Java")));
```

### Assertion Helpers
```java
assertThat(response).isNotNull().isNotEmpty();
assertThat(response).containsAll(expectedKeywords);
assertThat(response).doesNotContain("error");
```

## Reference Documentation

- **[Testing Dependencies](references/testing-dependencies.md)** - Maven/Gradle configuration
- **[Unit Testing](references/unit-testing.md)** - Mock models, guardrails
- **[Integration Testing](references/integration-testing.md)** - Testcontainers, real services
- **[Advanced Testing](references/advanced-testing.md)** - Streaming, memory, error handling
- **[Workflow Patterns](references/workflow-patterns.md)** - Test pyramid, best practices

## Constraints and Warnings

- AI responses are non-deterministic; use mocks for reliable unit tests
- Avoid real API calls in tests to prevent costs and rate limiting
- Integration tests require Docker; use container health checks
- RAG tests need properly seeded embedding stores
- Mock-based tests cannot guarantee actual LLM behavior; supplement with integration tests
- Use test-specific configuration profiles; never affect production data

© giuseppe-trisciuoglio · MIT · giuseppe-trisciuoglio/developer-kit

Похожие скиллы

Всё по теме «Тесты и QA» →
130-java-testing-strategies Juan Antonio Breña Moral Скилл разбирает Java-тесты по трём методикам: RIGHT-BICEP подбирает случаи, A-TRIP чинит нестабильные, CORRECT проверяет границы. CX Codex +1 377установок java-testing-advanced pluginagentmarketplace Скилл для продвинутого тестирования Java: поднимает реальные базы и Kafka в контейнерах, проверяет контракты API, ищет дыры в покрытии мутациями. CX Codex +1 328установок golang-testing-strategies Claude MPM Team Скилл для написания тестов на Go: табличные тесты, testify, gomock, бенчмарки и покрытие в CI. Пригодится, когда нужно навести порядок в тестовом наборе проекта. CX Codex +1 443установок csharp-testing affaan-m Скилл для написания и разбора тестов на C# и .NET: xUnit, FluentAssertions, моки, интеграционные тесты. CX Codex +1 4 500установок 322-frameworks-spring-boot-testing-integration-tests Juan Antonio Breña Moral Скилл для написания и разбора интеграционных тестов Spring Boot 4.0.x: Testcontainers, срезы персистентности, HTTP-проверки. CX Codex +1 357установок ai-system-testing kindlmann Скилл для проверки ИИ-фич в продукте: регрессии промптов, оценка качества ответов, галлюцинации, RAG и инъекции. CX Codex +1 1 100установок

Из того же набора93

nextjs-deployment Готовит конфигурацию для деплоя Next.js в продакшен. Настраивает многоэтапный Dockerfile, CI/CD через GitHub Actions, мониторинг OpenTelemetry и проверку работоспособности сервиса. CX Codex +1 3 700установок aws-sdk-java-v2-lambda Скилл подсказывает агенту, как вызывать и обновлять функции AWS Lambda через AWS SDK for Java 2.x. Пригодится, если пишешь на Java и работаешь с Lambda. CX Codex +1 3 700установок aws-rds-spring-boot-integration Скилл подсказывает, как подключить Aurora, MySQL или PostgreSQL к Spring Boot: пул HikariCP, SSL, IAM-аутентификация, секреты. CX Codex +1 3 700установок aws-sdk-java-v2-dynamodb Скилл даёт шаблоны работы с Amazon DynamoDB через AWS SDK for Java 2.x и Enhanced Client. Он помогает настроить типизированный CRUD, запросы по ключам и транзакции в Spring Boot. CX Codex +1 3 700установок aws-sdk-java-v2-s3 Даёт агенту готовые примеры работы с Amazon S3 через AWS SDK for Java 2.x: бакеты, загрузка объектов, multipart, presigned URL. CX Codex +1 3 700установок langchain4j-mcp-server-patterns Скилл помогает проектировать MCP-серверы на Java и подключать их к LangChain4j. Пригодится при вызове инструментов в Spring Boot и фильтрации прав доступа. CX Codex +1 3 700установок langchain4j-vector-stores-configuration Скилл подсказывает, как собрать векторное хранилище для RAG на LangChain4J: подключение, размерность эмбеддингов, фильтры по метаданным. CX Codex +1 3 700установок unit-test-application-events Паттерны юнит-тестов для событий Spring: проверка публикации через ApplicationEventPublisher и работа @EventListener без поднятия контекста. CX Codex +1 3 700установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой