问题描述
有谁知道 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 是否已过时(按照手动步骤不再起作用)或者我是否在设置中遗漏了某些内容并且我看不到它如何展开到“它”等级。上面的图片来自 ReSharper 我也用带有 VS 扩展的 Visual Studio 尝试过,但遇到了同样的问题。
有谁知道 NSpec 是否还活着或者是否有继任者?或类似的东西?我并不是真的在这里寻找完整的 BDD(如 SpecFlow)我觉得关键是:
- 能够以字符串形式编写测试(去掉那些下划线)
- 将测试嵌套到合理的单元中
或者如果有人有办法在我缺少的标准 xUnit 等中执行上述操作:)
作为参考,我已将我的测试上传到这个 git hub 文件夹: https://github.com/chrispepper1989/RPGAsAService/tree/nspec_test/RPGAAS/RPGAAS/tests
它包含我编写测试的原始方式(在标准 XUnit 中)和我觉得我更喜欢的 NSpec 版本。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)