字符串不包含的 MSTest 的替代方法

Alternate ways to MSTest that a string does not contain

我正在使用 TDD 在 C# 中编写诅咒词审查系统,因为我对实现 TDD 还很陌生,我想知道是否有替代或更好的方法来完成确保 return 字符串不包含诅咒词及其变体。由于这是一个 public 论坛,我正在用干净的词替换代码中的实际诅咒词,所以假设我只是为了这个 post 尝试审查更清晰的版本,请:

[TestMethod]
        public void process_CensorCode_GivenJerkface_ReturnsStringWithoutJerkface()
        {
            //ACT
            string result = proc.process("Jerkface you Jerkfacing Jerkfacer &*E@*Jerkface391!!", PROCESS_CODE.CENSOR);
            //ASSERT
            Assert.IsFalse(result.Contains("Jerkface"));
        }

显然,我的程序还考虑了 jerkface、jerKfAcE、jERKfaCe 等....我想测试所有这些。我是否需要为 MSTest 中的每一个变体编写一个方法,或者是否有一些快捷方式可以在单个测试中处理所有这些变体?如果您发现我的测试的任何其他方面可以改进,也请说出来。顺便说一句,我已经初始化了以下放置在 TestClass 顶部的内容:

[TestInitialize]
        public void Initialize()
        {
            //ARRANGE
            proc = new RegExProcessor();
        }

nUnit 具有此场景的 TestCase 属性。它可以通过以下方式使用:

[Test]
[TestCase("Jerkface")]
[TestCase("jerKfAcE")]
//[TestCase("...")]
public void process_CensorCode_GivenJerkface_ReturnsStringWithoutJerkface(string checkedWord)
{
    //ACT
    string result = proc.process("Jerkface you Jerkfacing Jerkfacer &*E@*Jerkface391!!", PROCESS_CODE.CENSOR);
    //ASSERT
    Assert.IsFalse(result.Contains(checkedWord));
}

要用 MSTest 实现它你应该付出更多的努力,因为 MSTest 仍然不支持这种简单形式的测试用例。 answer 详细介绍了如何使用 MSTest 完成它。