有谁知道 NSpec 或类似的替代品是否仍然有效?
最近在 Scala 世界中待了一段时间,当我回到 C# 时,我突然发现 C# 中的标准单元测试风格真的很笨重。
我遇到了NSpec并且非常喜欢它。似乎让我能够以 Typescript 和 Scala 提供的风格编写测试,而不是我习惯的 C# 风格:
- [测试] When_CharacterAttacksOtherCharacter_OtherCharacterHealthGoesDownByAttackPower
- [测试] When_CharacterAttacksOtherCharacter_OtherCharacterDiesWhenHealthBelow
- [测试] When_CharacterAttacksOtherCharacter_AttackPowerIsMoreWhenTypeAdvantage
它让我用这种风格写作
//context methods are discovered by NSpec (any method that contains underscores)
void describe_BattleSystem()
{
//contexts can be nested n-deep and contain befores and specifications
context["characters are in battle"] = () =>
{
before = () =>
{
ModifierRepository modifierRepository = new ModifierRepository();
battleSystem = new BattleSystem(characterAttackPowerRepo, characterHealthRepo, characterTypeRepo, modifierRepository);
};
context["character attacks another character"] = () =>
{
before = () => battleSystem.Attack("Hero", "Ogre");
it["defending characters' health goes down by attack character attack power"] = () =>
{
battleSystem.GetHealth("Ogre").Should().Be(90);
};
it["other character dies when health below 0"] = () =>
{
for (int i = 0; i < 100; ++i)
battleSystem.Attack("Hero", "Ogre");
battleSystem.IsDead("Ogre").Should().Be(true);
};
};
};
}
我觉得这是编写测试的更好方法。
但似乎 NSpec 最近一次更新是在 4 年前。而且我根本无法让测试运行程序工作。IDE 支持似乎就在那里:
但我不确定 .exes 是否已过时(按照手动步骤不再起作用),或者我是否错过了设置中的某些内容,我无法看到它如何展开到“It”级别。上面的图片来自 ReSharper 我也尝试使用带有 VS 扩展的 Visual Studio 并遇到了同样的问题。
有谁知道 NSpec 是否还活着或者是否有继任者?或类似的东西?我并不是真的在这里寻找完整的 BDD(比如 SpecFlow) 我觉得关键是:
- 能够以字符串形式编写测试(摆脱那些下划线)
- 将测试嵌套到合理的单元中
或者,如果有人有办法在标准 xUnit 等中执行上述操作,我错过了:)
作为参考,我已将测试上传到此 git hub 文件夹: https ://github.com/chrispepper1989/RPGAsAService/tree/nspec_test/RPGAAS/RPGAAS/tests
它包含我编写测试的原始方式(在标准 XUnit 中)和我觉得我更喜欢的 NSpec 版本。