我目前正在学习单元测试和集成测试,据我所知,单元测试用于测试特定类的逻辑,而集成测试用于检查多个类和库之间的协作。
但是,它只是用于测试多个类,如果它们按照预期一起工作,还是在集成测试中访问数据库也是有效的?如果是这样的话,如果由于服务器端错误而无法建立连接,那么测试就不会失败,尽管代码本身会像预期的那样工作?我如何知道在这种测试中什么是有效的?
我不明白的第二件事是他们是如何建立起来的。在我看来,单元测试有一种非常常见的形式,比如:
public class classTest {
@BeforeEach
public void setUp(){
}
@
我一直在使用MiniTest学习TDD/BDD。我试图找出我的代码的哪些部分应该用MiniTest::Unit::TestCase进行测试,哪些部分应该使用MiniTest::Spec进行测试。
我理解单元测试和集成测试之间的区别,从跨web的示例中我似乎无法理解的是,TestCase和Spec是单元测试还是用于单元测试的TestCase和用于集成测试的Spec?
我是否应该在MiniTest:: unit ::TestCase类中保留我的快速单元测试,以及在MiniTest::Spec期望值中更经常描述特性的更长时间的集成测试?这到底是重要的,还是个人偏好的问题?
我想知道使用第三方软件和/或网络请求是否是进行集成测试的动机?为了保持代码示例的最小化,我将单元测试定义为完全测试一个函数,将集成测试定义为测试两个或多个函数。
我想到了这样的进展:
应用程序只有自己的功能(在另一个模块中实现的功能)。公平地说(除了不知道如何模拟my_first_funcEx1的输出),对这两个函数中的每一个都进行单元测试会使集成测试在这种情况下变得不必要吗?
# main
c = my_first_funcEx1(a, b)
d = my_second_funcEx1(c)
应用程序使用第三方软件和/或网络请求。公平地说(除了进行三个单元测试,其中一
我正在为一位同事检查一些代码,并在单元测试类中遇到了一个测试,该测试如下所示:
// setup
Foo f = ...
FooToBarConverter ftb = ...
Bar b = ftb.Convert(f); // It is easier to create a Bar by converting it from a Foo than making one 'from scratch'
// test
systemUnderTest.DoSomething(bar);
// assert
Assert.IsTrue(...)
显然,这是一个集成测试,因为它