问题标签 [integration-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2359 浏览

unit-testing - 您在编写集成测试时遇到了哪些挑战?

您在编写集成测试时遇到了哪些挑战?编写单元测试是否有助于编写集成测试?

0 投票
9 回答
16637 浏览

unit-testing - 集成测试所需的数据库数据;由 API 调用或使用导入的数据创建?

这个问题或多或少与编程语言无关。但是,由于这些天我主要使用 Java,因此我将从中提取示例。我也在考虑 OOP 案例,所以如果你想测试一个方法,你需要一个该方法类的实例。

单元测试核心规则是它们应该是自治的,这可以通过将一个类与其依赖项隔离来实现。有几种方法可以做到这一点,这取决于您是否使用IoC注入依赖项(在 Java 世界中,我们有 Spring、EJB3 和其他提供注入功能的框架/平台)和/或您是否模拟对象(对于 Java,您有JMockEasyMock)将被测试的类与其依赖项分开。

如果我们需要测试不同类*中的方法组并看到它们很好地集成,我们编写集成测试。这是我的问题!

  • 至少在 Web 应用程序中,状态通常被持久化到数据库中。我们可以使用与单元测试相同的工具来实现与数据库的独立性。但是以我的拙见,我认为在某些情况下,不使用数据库进行集成测试是在嘲笑太多(但可以不同意;根本不使用数据库也是一个有效的答案,因为它使问题变得无关紧要)。
  • 当您使用数据库进行集成测试时,如何用数据填充该数据库?我可以看到两种方法:
    • 存储集成测试的数据库内容并在开始测试之前加载它。如果它被存储为 SQL 转储、数据库文件、XML 或其他东西会很有趣。
    • 通过 API 调用创建必要的数据库结构。这些调用可能会在您的测试代码中拆分为几个方法,并且这些方法中的每一个都可能失败。它可以被视为您的集成测试依赖于其他测试。

您如何确定测试所需的数据库数据在您需要时是否存在?你为什么选择你选择的方法?

请提供带有动机的答案,因为有趣的部分在于动机。请记住,只是说“这是最佳实践!” 不是真正的动机,它只是重复你读过或从某人那里听到的东西。对于这种情况,请解释为什么它是最佳实践。

*在我的单元测试定义中,我在同一类的(相同或其他)实例中包含了一种调用其他方法的方法,即使它在技术上可能不正确。随时纠正我,但让我们把它作为一个附带问题。

0 投票
4 回答
33127 浏览

continuous-integration - 如何自动化集成测试?

我想知道一些事情,我知道为了使您的测试更容易,您应该在单元测试期间使用模拟来仅测试您想要的组件,而无需外部依赖。但在某些时候,您必须硬着头皮测试与您的数据库、文件、网络等交互的类。

我的主要问题是:您如何测试这些课程?

  • 我不觉得在我的 CI 服务器上安装数据库是一个好习惯,但是您还有其他选择吗?

  • 我应该使用其他 CI 工具创建另一个服务器,并具有所有外部依赖项吗?

  • 我应该像单元测试一样频繁地在 CI 上运行集成测试吗?

  • 也许应该由专职人员负责手动测试这些组件?(或负责创建测试环境并配置您的类与外部依赖项之间的交互,例如编辑应用程序的配置文件)

我想知道你在现实世界中的表现如何。

0 投票
1 回答
1812 浏览

eclipse - Best practices for Eclipse Feature Integration Testing

I am developing an Eclipse feature consisting of several Eclipse plugins, using Equinox Declarative Services (DS) to wire the plugins together at runtime. I would like to add integration tests to verify the equinox configuration.

In particular, I want to verify that

  • the service components bind together as expected
  • the bundles are activated
  • the plugins share information as expected (see Edit 2)

Furthermore, I want to make this integration testing a part of my continuous integration process using an Eclipse PDE headless build (as described here and here).

My question is: Can you recommend any frameworks, tools, or practices that will facilitate this type of integration testing within the constraints I've identified?

I've found two leads so far:

  • Spring Dynamic Modules includes a framework for OSGi integration testing. However, I haven't been able to get a simple Spring DM test to run within Eclipse. It complains that "the platform is already running".
  • Pax Exam (formerly Pax Drone) is another OSGi integration testing framework.

Edit: To clarify, each plugin has an OSGi service component configured with a component definition xml file. A mistake in one of these configuration files will not break any plugin dependencies and could easily go unnoticed until runtime. Integration testing is necessary to detect such failure.

Edit 2: So far every thing I've seen seems to confirm Uri's assertion (see below) that multi-plugin Eclipse features aren't integration-tested at the feature/product level. I'm willing to go without comprehensive integration tests if I can at least automatically verify that the service components bind together correctly.

My approach (not working yet):

I'm running my code with an Eclipse Plug-in Test launch configuration, launching my Eclipse product as the "Program to Run". When the tests run, I can verify that the bundles are active but the service components do not get activated and the getServicesInUse and getRegisteredServices methods return null. I loaded a class from each bundle in case it was a lazy-activation issue, but that didn't help. I also verified that all the service components are "immediate" components, so they should be activated as soon as their bundle's are activated. Why isn't Equinox DS doing its magic?

0 投票
9 回答
946 浏览

unit-testing - 如果您已经进行了功能测试,是否还需要进行单元和集成测试?

我公司的人认为单元测试是很多额外的工作,与现有的功能测试相比,它提供的好处更少。单元和集成测试值得吗?请注意在设计时并未考虑测试的大型现有代码库。

0 投票
9 回答
466 浏览

unit-testing - 哪种类型的单元测试在商业价值方面的回报最大?

我的问题假设人们已经相信某种单元测试是值得的,并且实际上将它们写在他们当前的项目中。让我们还假设代码的某些部分的单元测试不值得编写,因为它们正在测试微不足道的功能。示例是 getter/setter,和/或编译器/解释器将立即捕获的东西。相反的假设是“有趣”的代码值得测试。

0 投票
2 回答
525 浏览

ruby-on-rails - 应该:测试控制器过滤器

所以我决定调查一下 Rails 的测试状态。在阅读了这里关于 Rails 的测试文档如何残暴的一些公认答案后,我开始同意。到目前为止,我显然不在了解 Rails 测试的人群中——尽管我对框架非常了解,或者我是这么认为的。

我读过Shouda 是一个很好的插件,所以我正在使用它。我的第一个测试:“确保方法需要一个 ID 参数”......嗯,这是有道理的;我想确保我的控制器上的 before_filter :validate_id 确实有效。这是测试我的索引的 GET 是否按预期方式工作所需的 3 步中的第 1 步。失败!显然,测试环境的运行方式与正常的 Rails 堆栈不同:

当 ActionController::TestCase 使用 get {} 时,我到处检查几乎没有包含过滤器的信息。我在哪里可以加入“Rails 测试人员俱乐部”,这样我才能解决这个问题?

0 投票
1 回答
1795 浏览

ruby-on-rails - 如何为多站点应用程序的集成测试长度设置子域?

在集成测试期间更改子域的最佳方法是什么?

jamis buck 建议使用主机!这里: http ://weblog.jamisbuck.org/2006/3/9/integration-testing-in-rails-1-1#12

但根据rails API,主机!仅更改以下单个请求的主机。我在功能测试中寻找类似@request.host 的东西,它让我可以在整个测试中使用子域。

0 投票
2 回答
871 浏览

java - 测试 EJB 3.0 组件

我有几个关于使用 JUnit 集成测试 EJB 3.0 组件的问题。

在您的 JUnit 测试中,您可以向会话 bean 注入资源本地实体管理器,从而“模拟”ejb-container。但如果...

  1. 如果您需要测试您的 ejb 方法上的事务属性是否被正确处理,该怎么办?这可以在容器外完成吗?如果没有,在容器内测试它的最简单方法是什么?

  2. 如果您需要在每次测试之前确保 db 中有一些测试记录怎么办?您如何确保在测试执行后(即使它失败)db 已清除测试数据?

0 投票
1 回答
1259 浏览

asp.net - 单元测试用户登录/注销

我对整个单元测试概念非常陌生,所以如果“单元测试”是错误的词,我很抱歉。我认为这实际上可能是一个“集成测试”?

无论如何,我正在使用 asp.net 的会员框架进行登录、注销、更改密码等。但是我做了一些额外的事情,比如更新身份验证票,在注册时向另一个表添加条目,在密码更改时刷新身份验证票, ETC。

为这些类型的案例编写测试的最佳方法是什么?