c# - 在文件阅读单词生成器上进行 TDD 的正确方法

标签 c# .net unit-testing tdd nunit

我正在尝试掌握 TDD。 我正在创建一个类,它从文件中读取字符,逐个字符地构建单词。

我遇到一点麻烦的部分是构建单词并返回它的方法。

public string GetNextWord()
{
    // please ignore implementation of characterReader,
    // I'm just using it as an example, I believe implementation is
    // irrelevant when unit testing, correct me if wrong
    return characterReader.NextWord();
}

我将如何以 TDD 方式执行此操作? 我目前有一个内容已知的测试文件。我将其传递进去以供阅读,并检查返回的单词是否以正确的顺序与输入文件中的内容相匹配。

文本文件内容: 测试文件内容一结束。

单元测试

string word1 = wordBuilder.GetNextWord();
string word2 = wordBuilder.GetNextWord();
.
.
Assert.IsTrue(String.Equals(word1, "Test");
.
.

这是正确的吗?我不认为让测试依赖于外部输入文件并检查硬编码字符串是“正确的”。有人可以解释一下正确的 TDD 方法吗? :)

最佳答案

是的,一般来说最好让每个单元测试不依赖于外部因素。

对于您的测试,您可以考虑创建一个 temp file在测试设置期间,您的测试断言被正确读取。通过这样做,您还可以在代码中访问文件的字符串内容。

关于c# - 在文件阅读单词生成器上进行 TDD 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776437/

相关文章:

c# - NEST ElasticSearch Cache QueryDescriptor供将来使用

c# - 在 Entity Framework 中保存实体的通用方法

c# - 解码 Decimal64 数据

c# - 流不可写

c# - 从对象列表中获取具有最大值的对象的最有效方法

c# - WebBrowser 控件和 Wininet API

java - 帮助解决失败的 Grails 测试 - 域方法不起作用?

android - 如何在 android 中对 JobScheduler 进行单元测试

angularjs - 有没有办法减少 Jasmine 单元测试中声明的引用数量

c# PostMessage 没有发送也没有错误