TestEvo-Bench

an executable, live benchmark for test and code co-evolution
mined from real open-source Java projects

About

Tests have to change when the code they check changes. TestEvo-Bench turns real commits from open-source Java (Maven) projects into tasks for coding agents: given a code change, the agent must write or edit the tests that go with it. Every task comes with a buildable repository and is validated by running the developer's own test, and every task records its commit date, so results can be restricted to commits made after a model's training cutoff.

The current snapshot has 3,020 tasks from 196 repositories with commits from January 2019 to June 2026, and a 584-task Lite subset for cheaper evaluation. Beyond pass/fail, each test is scored by the coverage it reaches and the share of mutants it kills. On Lite, the six agent configurations we evaluated (mini-SWE-agent and Claude Code with four models) succeed on 98.3–99.1% of tasks and reach an overall score of 79.8–84.4%, on par with the developers' own tests (81.8%). The leaderboard therefore ranks them by this overall score, which also counts coverage and mutation.

Three tracks — pick one to see a real task from the benchmark

A code change adds or changes behaviour. Write a new test that passes on the new code and fails on the old code.

Example UrlTemplate.put(Map) called putAll on its own argument, so the parameters were silently dropped. The fix passes each entry to put(String, String), and the developer adds a test that checks the rendered URL contains them. Task from FluentLenium/FluentLenium, January 2019 (diff).

production UrlTemplate.java
public UrlTemplate put(
Map<String, String> values) {
values.putAll(values);
values.forEach(this::put);
return this;
}
test generation UrlTemplateTest.java
public class UrlTemplateTest {
// ... existing tests
@Test
public void testSetParametersFromMap() {
UrlTemplate template = new UrlTemplate(
"/abc/{param1}/def{?/param2}/ghi{?/param3}");
template.put(Map.of(
"param1", "test1", "param3", "test3"));
assertThat(template.render())
.isEqualTo("/abc/test1/def/ghi/test3");
}
}

Dataset overview

Loading dataset statistics…

Leaderboard

Agent results on the 584-task Lite subset, recomputed for the selected commit-date window. Over the full window the numbers match the paper.

Loading…

# Agent Model Success CovOnPass MutOnPass Overall Tasks
Loading leaderboard…
Metric definitions

Data Explorer

Browse every repository in the full benchmark. Filter by commit date, track or the Lite subset, then click a row to see its tasks and the GitHub diffs.

Loading…

Repository Total update generation refinement Date range
Loading tasks…