首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我将插件添加到红矿山安装中时,大量的测试失败了。

当我将插件添加到红矿山安装中时,大量的测试失败了。
EN

Stack Overflow用户
提问于 2017-12-04 03:04:50
回答 1查看 100关注 0票数 0

我在Ruby2.3.3上安装了RedmininVersion3.4.2.stable,并点击了rake test

只有3个测试失败,这对于一个新安装的数千个测试的第一次运行非常好。

然后我添加了一堆插件。我们只能说它们是:

代码语言:javascript
运行
复制
google_analytics_plugin        1.0.0
progressive_projects_list      1.0.0
redmine_agile                  1.4.5
redmine_agreement              0.1.1
redmine_base_deface            0.0.1
redmine_cms                    1.0.1
redmine_contacts               4.1.1

现在更多的测试失败了。准确地说,在4225个测试用例中,有215个失败和1530个错误。我将假设rake test调用rake redmine:plugins:test,但这仍然是令人难以置信的失败次数。

例如,其中一个错误是:

代码语言:javascript
运行
复制
MemberTest#test_validate_member_role:
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect string value: '\xD0\xAD\xD1\x82\xD0\xB8...' for column 'title' at row 1: INSERT INTO `wiki_pages` (`created_on`, `title`, `id`, `wiki_id`, `protected`, `parent_id`) VALUES ('2007-03-07 15:18:07', 'Этика_менеджмента', 10, 1, 0, NULL)

似乎有人把语言换成了俄语,而不是把它改回来。

现在我真正的问题是:红矿地的每个人都接受这种程度的测试脆弱性吗?当然,不能期望我修复每个测试,向他们的维护人员提交补丁,然后提高我的客户端使用这些插件的最新版本的级别。

我该怎么处理红敏的TDD?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 11:33:35

Redmine项目本身维护其核心测试,这些测试假设其功能完整性已经到位,即没有任何插件可以更改功能。因此,没有任何插件的普通红矿山有望通过所有核心测试。

但是,一旦你引入插件,事情就变了。由于许多插件连接或更改了许多内部Redmine功能(通常是通过猴子补丁)以提供它们的功能,因此安装它们会导致对核心Redmine破坏的各种测试,因为它们的假设不再成立。因为Remdine只有很少的内部API来连接插件,所以猴子补丁通常是插件连接到内核的唯一方法。

不幸的是,很难(如果不是不可能)猴子补丁核心测试和插件的功能,以使他们适应新的/改变的行为。

这导致了当前的不幸情况,几乎所有的Redmine插件都几乎没有(如果有的话)测试。有时,您会对插件的功能进行单元测试,但是功能完整的集成测试非常罕见。因此,在使用插件时,您通常不能依赖工作测试,而必须恢复到代码评审和手动单击测试。

我发现在查看插件时,那些运行最好的插件只有很少的猴子补丁,试图将自己限制在稳定的接口上,或者在可能的情况下提供钩子,并避免覆盖Redmine的核心功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47625934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档