Set up and run automated tests for vvvv gamma packages and C# nodes -- VL.TestFramework with NUnit for library/package authors (CI-ready), test .vl patches with assertion nodes, and lightweight agent-driven test workflows. Use when writing tests for vvvv packages, setting up test infrastructure, creating test patches, running automated compilation checks, or integrating vvvv tests into CI/CD."
| 方法 | 适用场景 | 设置 |
|---|---|---|
| VL.TestFramework (NUnit) | 包/库作者,CI 集成 | 使用 NUnit 的 .csproj 测试项目 |
| Agent 测试工作流 |
创建引用 VL.TestFramework 的测试 .csproj:
xml
csharp
using NUnit.Framework;
using VL.TestFramework;
[TestFixture]
public class MyPackageTests
{
TestEnvironment testEnvironment;
// 重要:不要使用 async Task(NUnit 同步上下文问题)
[OneTimeSetUp]
public void Setup()
{
var assemblyPath = typeof(MyPackageTests).Assembly.Location;
var searchPaths = new[] { path/to/your/package };
testEnvironment = TestEnvironmentLoader.Load(assemblyPath, searchPaths);
}
[OneTimeTearDown]
public void TearDown()
{
testEnvironment?.Dispose();
testEnvironment = null;
}
[Test]
public async Task MyPatchCompilesWithoutErrors()
{
await testEnvironment.LoadAndTestAsync(path/to/MyPatch.vl);
}
[Test]
public async Task MyPatchCompilesAndRuns()
{
await testEnvironment.LoadAndTestAsync(
path/to/MyPatch.vl,
runEntryPoint: true);
}
}
完整 API 参考,请参见 test-framework-reference.md。
VL.TestFramework 自动发现测试:
文件发现模式:
VL.MyPackage/
tests/
MyFeatureTest.vl <-- 自动发现的测试文档
IntegrationTests.vl <-- 自动发现的测试文档
help/
HowTo Use Feature.vl <-- 测试编译错误
shell
在 .vl 测试补丁中使用这些节点来断言行为。可在 VL.Lib.Basics.Test.TestNodes 下找到:
csharp
// 在 VL 补丁中,这些可作为节点使用:
TestNodes.Assert(condition, message) // 通用断言
TestNodes.AreEqual(expected, actual) // 值相等
TestNodes.AreNotEqual(expected, actual) // 值不相等
TestNodes.IsNotNull(input) // 空值检查
TestNodes.AreSequenceEqual(expected, actual) // 集合相等
TestNodes.AssertElementHasError(elementGuid) // 验证元素有编译错误
TestNodes.AssertElementHasNoError(elementGuid) // 验证元素无编译错误
断言失败时会抛出 AssertionException,测试运行器会捕获并报告。
用于无需完整 NUnit 项目的快速验证:
创建一个 .vl 文件来测试目标功能。包含 TestNodes 用于断言。以 Test 后缀命名以便自动发现。要了解 .vl XML 文件结构(文档层次结构、元素 ID、节点引用、引脚、焊盘、链接),请参考 vvvv-fileformat 技能。
编写一个加载并编译补丁的最小 C# 脚本或测试:
csharp
var env = TestEnvironmentLoader.Load(assemblyPath, searchPaths);
await env.LoadAndTestAsync(path/to/MyTest.vl, runEntryPoint: true);
env.Dispose();
使用 vvvv-debugging 技能设置启动配置以打开测试补丁:
shell
vvvv.exe --stoppedonstartup --debug --log -o path/to/MyTest.vl
vvvv 退出后,检查:
大多数 vvvv 仓库使用 Nuke。测试目标:
csharp
Target Test => =>
.Executes(() =>
{
DotNetTest( =>
.SetProjectFile(Solution)
.SetConfiguration(Configuration));
});
运行方式:./build.ps1 或 ./build.sh(默认为 Publish 目标;使用 --target Test 进行测试)。
yaml
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 vvvv-testing-1776204795 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 vvvv-testing-1776204795 技能
skillhub install vvvv-testing-1776204795
文件大小: 6.24 KB | 发布时间: 2026-4-15 10:20