算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
qa-testing-nunit【设计与创意】Designs NUnit-based C# test suites for API, component, and integration coverage. Use when creating fixtures, wiring Testcontainers, or reducing flaky CI behavior.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
dotnet test, Microsoft.Testing.Platform, global.json, adapters, or coverage/logging switches, verify the repo's current runner mode first and use current primary sources from data/sources.json.Given... helpers; the test class holds the NUnit lifecycle and assertions.WebApplicationFactory, and client.[FixtureLifeCycle(LifeCycle.InstancePerTestCase)] pairs with [Parallelizable]: NUnit's default SingleInstance lifecycle shares one fixture object across every test method, so instance fields become a race condition the moment two of its tests run concurrently. InstancePerTestCase gives each test its own instance, isolating instance-field state; it does not isolate static fields or external shared resources (containers, WireMock servers), which is why [OneTimeSetUp]/[OneTimeTearDown] must stay static under this lifecycle and shared runtime still needs its own reset discipline in [SetUp].[SetUp]; dispose all owned infra in [OneTimeTearDown].0, then check the required tables (starting point: assets/nunit-database-launcher-template.cs). If the repo already has a launcher or migration helper, reuse it instead of forking.[Test] + [TestCase] + [CancelAfter(...)] with method signature (string url, CancellationToken cancellationToken); keep [Test] together with [TestCase] to avoid NUnit analyzer issues.Assert.Multiple or Assert.EnterMultipleScope for related assertions, and use TestContext.Progress or fixture diagnostics when failures need more context.$software-csharp-backend.nuke/Build.cs, test runner selection, category target wiring, or CI artifact publication, switch to $ops-nuke-cicd.data/sources.json before recommending package changes or command-line flags.dotnet test, MTP, coverage, and CI wiring in $ops-nuke-cicd; keep this skill focused on fixture design and suite structure.references/test-platform-modes.md; assertion-library licensing lives in references/assertions-and-diagnostics.md. Look up current versions on NuGet before pinning.references/nunit-structure.md. If the request touches dotnet test, runner mode, adapters, or CLI flags, also load references/test-platform-modes.md.references/fixture-pattern.md and references/testing-templates.md.references/api-testing-nunit.md; for component tests, the boundaries section of references/reliability-and-dependencies.md.references/reliability-and-dependencies.md, then references/wiremock-setup.md or references/testcontainers-setup.md.references/reliability-and-dependencies.md and references/assertions-and-diagnostics.md.references/testing-templates.md).references/ci-parallelism-sharding.md and references/infrastructure-troubleshooting.md.--list-tests proves discovery only; a green filtered run proves only that category and target framework. For NUKE-based repositories, run the repo's build target and the category test targets that cover the change; use $ops-nuke-cicd for pipeline-target changes.If Testcontainers or WireMock is part of the oracle, require evidence that the intended dependency started, became ready, received the expected interaction, and was cleaned up. List excluded suites explicitly instead of calling the NUnit run complete.
dotnet test, MTP, adapters, and repo-level CLI drift.TestCaseData source methods.WireMockServerWrapper and per-dependency *WiremockServer helper pattern.## Workflow; use ## Failure Triage for symptom-first debugging and ## Related Skills for handoffs.$qa-testing-strategy first, then return here for how to build it.dotnet test/MTP/VSTest runner-mode mismatch, coverage collector wiring, or CI target graph, not fixture/test code — use $ops-nuke-cicd; do not try to fix runner-mode drift by editing test files.$software-csharp-backend; writing tests around a bug is this skill's job, fixing the bug is not.$qa-testing-playwright or the relevant mobile/UI skill instead.references/reliability-and-dependencies.md — do not keep guessing fixes; add diagnostics (correlation IDs, container/WireMock logs, timing) first, reproduce deterministically, and only then patch. Silently adding [Retry] to hide an unexplained flake is a regression, not a fix.| Symptom | Likely cause class | First move |
|---|---|---|
| Test passes alone, fails in full run | Shared mutable state or fixture lifecycle mismatch | Check [FixtureLifeCycle]/[Parallelizable] combination; confirm [SetUp] actually resets everything the failing test reads |
| Test passes locally, fails only in CI | Port collision, Docker host assumption (localhost vs remote Docker host), or resource contention under CI parallelism | Check for hard-coded ports/hosts (references/reliability-and-dependencies.md, references/testcontainers-setup.md); reduce parallelism for the failing category as a diagnostic, not a permanent fix |
| Intermittent timeout on eventually-consistent assertions | Fixed sleep instead of polling, or timeout too tight for CI-under-load | Replace with the Eventually helper in references/reliability-and-dependencies.md; widen timeout only after confirming the condition is correct, not to paper over a race |
dotnet test silently discovers 0 tests after an upgrade | Adapter major version mismatched to MTP generation, or mixed VSTest/MTP in one solution | Check adapter ↔ MTP ↔ TFM matrix in references/test-platform-modes.md before touching test code; add --minimum-expected-tests under MTP so this fails the run instead of passing green |
| Coverage report is empty or missing after enabling MTP | A VSTest-only coverage collector left in place; it silently no-ops under MTP | Swap to an MTP-native coverage extension: look up the current package pairing in references/test-platform-modes.md and confirm it in the package's own docs |
| Migrator-dependent test fails with a missing-table error | Migrator ordering issue, not a test bug | Check references/infrastructure-troubleshooting.md migrator-ordering section before adding retries or longer timeouts |
| Skill | Purpose |
|---|---|
| software-csharp-backend | Backend service implementation |
| ops-nuke-cicd | NUKE pipeline targets and CI wiring |
dev-structured-logs | Structured logging migration |
| qa-testing-strategy | Risk-based test strategy |
| qa-testing-playwright | Browser/E2E suites (out of scope here) |
When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.