我在Ruby2.3.3上安装了RedmininVersion3.4.2.stable,并点击了rake test。
只有3个测试失败,这对于一个新安装的数千个测试的第一次运行非常好。
然后我添加了一堆插件。我们只能说它们是:
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,但这仍然是令人难以置信的失败次数。
例如,其中一个错误是:
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?
发布于 2017-12-05 11:33:35
Redmine项目本身维护其核心测试,这些测试假设其功能完整性已经到位,即没有任何插件可以更改功能。因此,没有任何插件的普通红矿山有望通过所有核心测试。
但是,一旦你引入插件,事情就变了。由于许多插件连接或更改了许多内部Redmine功能(通常是通过猴子补丁)以提供它们的功能,因此安装它们会导致对核心Redmine破坏的各种测试,因为它们的假设不再成立。因为Remdine只有很少的内部API来连接插件,所以猴子补丁通常是插件连接到内核的唯一方法。
不幸的是,很难(如果不是不可能)猴子补丁核心测试和插件的功能,以使他们适应新的/改变的行为。
这导致了当前的不幸情况,几乎所有的Redmine插件都几乎没有(如果有的话)测试。有时,您会对插件的功能进行单元测试,但是功能完整的集成测试非常罕见。因此,在使用插件时,您通常不能依赖工作测试,而必须恢复到代码评审和手动单击测试。
我发现在查看插件时,那些运行最好的插件只有很少的猴子补丁,试图将自己限制在稳定的接口上,或者在可能的情况下提供钩子,并避免覆盖Redmine的核心功能。
https://stackoverflow.com/questions/47625934
复制相似问题