Skip to main content
Daniel Maß
Maintainer of Xcepto
View all authors

Xcepto 10.0.0 Announcement

· One min read
Daniel Maß
Maintainer of Xcepto

I'm happy to announce, that Xcepto version 10 is coming soon!

It brings a bunch of changes, improving the readability of tests even further.

Among these changes are:

  • Builders for assembling states with shared methods like .WithName("MyState")
  • Extension methods replacing var adapter = builder.RegisterAdapter(new Adapter()) with var adapter = builder.AddRestAdapter().Build(). This opens up the opportunity to standardize adapter creation with builder methods like WithSomething() that can be shared across adapters.
  • Promised values will allow users to capture the future results of steps and use them for following steps. To achieve that, Promise<MyResult> will be passable to state builders as an argument.

There will be more detailed information coming soon!

I built xcepto-skill so AI agents can write better Xcepto tests

· 2 min read
Daniel Maß
Maintainer of Xcepto

Xcepto is still new, and that created an unexpected problem: AI agents were bad at writing Xcepto tests.

Not because the tests were impossible — but because the model had almost no reliable context. When I asked Codex to write Xcepto tests, it usually tried to infer the framework from whatever it could find. Sometimes it checked out Xcepto.NET somewhere temporary. Sometimes it guessed APIs through reflection. Sometimes it copied local fragments without really understanding the test model.

Same test. Different runtime. Different behavior. Why?

· One min read
Daniel Maß
Maintainer of Xcepto

That's the pain of cross-platform development. Especially when switching between async .NET and Unity coroutines.

  • Backend runner: ✔ works
  • Frame-spaced execution: ❌ blocks, ❌ freezes, ❌ partially executes

Runtimes often leak into behavior. But a good abstraction should preserve semantics.

Why aren't tests as composable as production code?

· One min read
Daniel Maß
Maintainer of Xcepto

If test code were just explicitly wired dependencies in local variables, composition would be straightforward.

But once you introduce asynchronous processing, messaging, or higher-level test frameworks, what the test is actually doing becomes opaque.

  • Execution order becomes implicit.
  • Data flow becomes hidden.
  • Coordination turns into guesswork.