Build1 distinct publisher3 min readUpdated
Microsoft.Testing.Platform streams results during the run instead of at clean shutdown. That only pays off if your CI uploads artifacts after a failing test step.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Since version 2.3, the Microsoft.Testing.Platform TRX reporter streams results while tests execute instead of waiting for a clean shutdown, so results already written to disk remain available as a valid partial report when the host terminates abruptly [1]. The consequence for CI owners is narrow but real: a crashed test host now costs you the results that had not finished, not the entire run's evidence [1][2].
The distinction matters because a report written only at the end disappears with the process, and a streamed one cannot resurrect a result that never completed but does preserve the work that did [1][2]. Three artifacts answer three different questions, and they are not substitutes. TRX says what completed [1]. The crash-sequence log names completed and in-flight tests, which narrows where execution stopped [3]. The dump may carry process state that explains why [5]. A dev.to walkthrough by ssukhpinder pairs the TRX report with `--crashdump --crashdump-type Mini --crash-sequence on`, noting that the sequence log is far smaller than the dump while still recording test progress [4][5].
The sample behind that walkthrough targets net10.0 with MSTest.Sdk 4.3.3, whose resolved MTP reporting and crash-dump packages come in at 2.3.3, which is on the streaming side of the 2.3 boundary [6][2]. Crash dumps are switched on with the `EnableMicrosoftTestingExtensionsCrashDump` property; the default MSTest runner profile already supplies TRX [7]. The author stays on TRX deliberately, because the JUnit, CTRF, HTML, and GitHub reporters are documented as experimental [8].
The demonstration is a three-test fixture: A passes, B calls `Environment.FailFast` only when the `DEMO_CRASH` environment variable is set to 1, and C should never start in the crash run [9]. The guard is the whole design; the verification script scopes the variable to the child process and restores the previous value afterwards [10]. The crash run adds `--report-trx --report-trx-filename crash.trx` to the crash flags and is expected to exit nonzero [11]. The assertions run after that: crash.trx must parse, must contain A's passed result, must not contain C, and the sequence text must name B [12]. Reported validation: three passing results in the normal run, and a controlled run that exited with code 7, kept A in the streamed TRX, omitted C, and named B in the crash sequence [13]. That is one surviving result out of three tests, which is exactly the arithmetic of a mid-run kill [1].
Two operational details are worth more than the demo. First, the Windows validation host did not produce the requested dump at all, because its native `createdump` tooling rejected the PID argument, and the verifier reports that as information rather than pretending every host can dump [14]. Dumps are the artifact you cannot rely on; the streamed TRX and the sequence log are the ones you can. Second, and this is the change to make in your pipeline: the evidence upload step has to run even when the test command fails, or the expected nonzero exit from the crash blocks the very step that makes the run legible [16]. The author also archives `crash.console.log` alongside the TRX and sequence so that tooling failures stay visible instead of vanishing into a red job [15].
What to watch: whether your agents can actually create dumps, since Microsoft's crash and hang dump documentation covers platform constraints as well as switches [5]; and whether the experimental reporters graduate, because a streamed JUnit or CTRF file would extend the same crash resilience to non-.NET dashboards [8].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Starting with Microsoft.Testing.Platform (MTP) 2.3, the TRX reporter streams results while tests execute instead of waiting for a clean shutdown; if the host terminates abruptly, results already written remain available in a valid partial report. Microsoft documents the behavior in its MTP test-reporting guide.
A report written only after a clean run can disappear with the process; a streamed report cannot recover a result that never finished, but it can preserve the work that did.
MTP's crash-sequence artifact names completed and in-flight tests, helping identify what was running when the host disappeared.
The author pairs TRX with two stable MTP crash-diagnostics options: --crashdump --crashdump-type Mini --crash-sequence on.
The dump can contain process state for deeper debugging; the sequence log is much smaller and records test progress, so it can identify the test that was in flight. Microsoft's crash and hang dump documentation explains the switches and platform constraints.
The sample targets .NET 10 (net10.0) and uses MSTest.Sdk 4.3.3; its resolved MTP reporting and crash-dump packages are version 2.3.3.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One reproducible practitioner demonstration, no independent confirmation
The technical mechanism is described precisely and backed by an author-run, deterministic verifier with named assertions and stated outcomes (exit code 7, test A retained, test C absent, test B in the sequence), and the article points to Microsoft's own reporting and crash-dump documentation. But the cluster contains exactly one source, the vendor documentation it invokes is not itself supplied, and the validation ran on a single Windows host where one of the two diagnostic artifacts failed to materialise. That supports the streaming claim well and the dump claim only partially.
One self-reported sample run; no external usage evidence
The only adoption signal in the cluster is the author's own sample 025 (a draft pull request) validated on one machine, plus a disclosure that the dump step failed there. No CI pipeline configuration, organisation, team, or third-party usage is reported, and the cluster gives no data on uptake of MTP 2.3.x or MSTest.Sdk 4.3.3 in the wider .NET ecosystem, so adoption is credibly nonzero but minimal.
Slightly ahead of the evidence, but self-caveated
The framing that a dead test host 'no longer erases the evidence' is broader than what was shown: one guarded FailFast crash on one Windows host, with the mini dump never produced and only one of three completed results preserved. The overstatement is small because the author repeatedly narrows the claim himself — partial TRX holds completed results only, the sequence log does not prove root cause, dumps are platform- and permission-sensitive, and the benefit depends on CI uploading artifacts after a failing step.
Practitioner audience-building, no disclosed vendor tie
The author is publishing a numbered sample series on a developer platform, links his own draft pull request and an earlier article of his own, and closes with an engagement question — mild self-promotional incentive to present the pattern as working. Against that, the piece is not vendor-authored, discloses a failed dump, flags competing reporters as experimental rather than overselling the stack, and lists security and platform limits, none of which serve a promotional motive. No sponsorship, employment, or commercial relationship is disclosed in the source, so the reading is bounded.
Internally consistent but single-source and thinly adopted
Claims are specific, mutually consistent, and tied to reproducible commands and version numbers, which supports moderate confidence in the mechanism. Confidence is held down by the one-publisher cluster, the absence of the cited Microsoft documentation as a supplied source, the single validation host, and the near-total absence of external adoption evidence.
build
A UDP packet is now enough: IKEEXT RCE moves from patch queue to fire drill1 distinct publisher
product
Nebius funds $4.5bn of AI capacity on terms that pay lenders mostly in stock2 distinct publishers
invest
Behind-the-meter gas is the data center buildout's real cost: 318 Mt a year1 distinct publisher
build
Grok 4.6 lands in Copilot two days after launch, and the model picker becomes a procurement problem1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026