Aleksei Dobrynin

Aleksei
Dobrynin

Java engineer focused on tooling, testing, and developer experience.

Based in Munich.

intellij-community · testng-team/testng · teamcity-gradle · eclipse-sisu/sisu-project · intellij-coverage · etiennestuder/teamcity-build-scan-plugin · apache/maven-enforcer · x-stream/xstream · ...

Making tests
easier to trust

TeamCity · Matrix Builds

Test your code, not just your machine

Different JDKs, OSes, and databases reveal different behaviors. A good CI setup helps you see that early, while the change is still fresh. Define a matrix — JDK × OS × Database, any axes you need. One config, every combination, on every commit.

TeamCity · Parallel Tests

Fast enough to run on every commit

A suite that runs in 2 hours gets run twice a day. One that runs in 15 minutes becomes part of how you think. Tests split by historical run-time — every agent finishes at the same time, no slow batch holds the rest. You don't need to switch context while waiting for CI — everything will be ready by the time you finish your coffee.

TestNG · since 7.13.0

Reusable parametrized tests work cleanly through inheritance

TestNG 7.13.0 makes it practical to keep DataProviders in a parent class and reuse them across subclasses. That makes abstract test contracts, shared fixtures, and reusable test hierarchies easier to apply without duplicating parametrized coverage.

IntelliJ IDEA · JUnit · TestNG · Jigsaw

When a test fails, the feedback should stay close to the code

Good test integration adds readable diffs, links to the right line, and the exact input behind a parametrized failure. That gives JUnit and TestNG users clearer feedback inside the IDE and helps the next fix happen faster.

Contributing back
upstream

Part of working in developer tooling is contributing back to the projects the ecosystem depends on. When an improvement belongs upstream, landing it there helps maintainers, users, and the wider toolchain at the same time.

intellij-community testng-team/testng teamcity-gradle eclipse-sisu/sisu-project ...
testng-team/testng · PR #3264
TestNG 7.13.0 — cleaner support for inherited DataProviders

TestNG 7.13.0 adds support for keeping a DataProvider in a parent class while reusing it from subclass-based tests. That opens the door to cleaner abstract test suites, less duplicated setup, and broader parametrized coverage in real projects.

eclipse-sisu/sisu-project · commit 65561db
sisu-project — helped stabilize repeated Maven runs on CI

Contributed to a Sisu change used by Maven that helped resolve file-locking problems during repeated CI builds. The solution introduced the sisu.url.caches system property as a safe way to disable URL caching when needed, making repeated Maven runs more stable in CI environments.

How I think about coverage.

  1. New task — write a happy path test and a couple of cases where it should fail.
  2. Bug reported — copy the request, reproduce it as a test, fix it, leave it there forever.
  3. Someone asks how the system behaves — open the test and show them.

I usually see the most valuable tests accumulate around the paths users rely on most. Each fix leaves a test behind, and over time the suite starts to reflect real usage. That tells me more than any percentage on its own.

Deep dives

Technical notes · demos · implementation details
How TestNG DataProvider Resolution Works in Practice

How DataProvider resolution works inside TestNG, why subclass inheritance requires per-class cache isolation, and what changed in 7.13.0.

Key idea: cache isolation across subclass contexts
Jigsaw in Practice: What Real Projects Run Into

The module system works best when you account for the realities of long-lived Java codebases. Here's what tends to matter in practice.

Key idea: running tests in IDEA with clean module boundaries
Statistical Batch Balancing for Parallel Tests

How to split a test suite so every agent finishes at the same time — the algorithm behind TeamCity's parallel test execution.

Key idea: why naive distribution always has a straggler

Work

JetBrains — Software Engineer
Munich, Germany · 2023–present

IntelliJ IDEA / Java team.

Working on Java tooling, test framework support, and developer experience around JUnit, TestNG, and JPMS.

JetBrains — Software Engineer
Munich, Germany · 2018–2023

TeamCity / Build Tools.

Worked on Maven and Gradle integrations, parallel test execution, and matrix builds.

Built independently · open source

Speculator

A tool for navigating large codebases with less repetitive context gathering.

Personal CLI project for AI-assisted code navigation. It stores a persistent knowledge graph in the repository so coding assistants can query structure instead of re-reading dozens of files on every task.

$ curl -fsSL https://github.com/madlexa/speculator/releases/latest/download/install.cmd | bash
speculator.trifle.one →