Unit testing 我是否应该为每个类创建一个接口以使代码可测试(单元测试)
我试图学习如何创建有价值的单元测试。 在每个教程中,我看到人们为每个依赖项创建接口来创建模拟 这是否意味着我应该始终为我项目中的每个类创建一个接口?我不知道这是个好主意还是个坏主意,但每次我看到一条“总是”的规则时,我都会产生怀疑 我应该总是为我项目中的每个类创建一个接口 没有 没有一条规则可以让您遵循,也没有一件事情可以让您的所有代码自动进行单元测试。您可以做的是编写具有可抽象依赖项的代码。如果您想测试您编写的代码是否易于进行单元测试,请尝试为其编写单元测试。如果一个依赖项挡住了你的路,你就有一个耦合的依赖项。抽象它 你如何抽象它取决于你自己。您可以使用多种工具:Unit testing 我是否应该为每个类创建一个接口以使代码可测试(单元测试),unit-testing,testing,interface,Unit Testing,Testing,Interface,我试图学习如何创建有价值的单元测试。 在每个教程中,我看到人们为每个依赖项创建接口来创建模拟 这是否意味着我应该始终为我项目中的每个类创建一个接口?我不知道这是个好主意还是个坏主意,但每次我看到一条“总是”的规则时,我都会产生怀疑 我应该总是为我项目中的每个类创建一个接口 没有 没有一条规则可以让您遵循,也没有一件事情可以让您的所有代码自动进行单元测试。您可以做的是编写具有可抽象依赖项的代码。如果您想测试您编写的代码是否易于进行单元测试,请尝试为其编写单元测试。如果一个依赖项挡住了你的路,你就有
虚拟成员的具体类
虚拟成员的具体类
测试代码是否可进行单元测试的真正试金石不是“我是否使用接口?”,而是“我可以为此编写一个有意义的单元测试吗?”如果功能是可隔离的,而不依赖于依赖项(通过不使用依赖项或允许模拟依赖项进行测试),那么对我来说,它似乎是相当可进行单元测试的。YAGNI。你不会需要它的。针对当前的问题,做你需要做的。如果需要,您可以随时在以后添加接口。顺便说一句,您不需要接口来使代码可测试。这是一个非常有效的问题。也许有多个答案是可能的,然后把它们放在下面并投票表决。你似乎正在阅读10年或更长时间前的教程,当时模拟框架只能模拟接口。现在已经不是这样了,而且有很长一段时间。@JBNizet如果我想模拟一个类,那么我需要生成我想要模拟的方法virtual@user4230877:两者都是,这取决于你正在做什么,以及它需要如何与你正在构建的其他一切协同工作。我们怎么强调都不过分。。。没有一种正确的方法可以编写所有可能的代码。你不会需要它的。针对当前的问题,做你需要做的。如果需要,您可以随时在以后添加接口。顺便说一句,您不需要接口来使代码可测试。这是一个非常有效的问题。也许有多个答案是可能的,然后把它们放在下面并投票表决。你似乎正在阅读10年或更长时间前的教程,当时模拟框架只能模拟接口。现在已经不是这样了,而且有很长一段时间。@JBNizet如果我想模拟一个类,那么我需要生成我想要模拟的方法virtual@user4230877:两者都是,这取决于你正在做什么,以及它需要如何与你正在构建的其他一切协同工作。我们怎么强调都不过分。。。没有一种正确的方法可以编写所有可能的代码。