小编bpa*_*lla的帖子

PHP全局常量是一个很好的现代开发实践吗?

我正在开发一个具有相当大的PHP代码库的新项目.该应用程序使用了很多PHP常量(define('FOO', 'bar')),特别是对于像数据库连接参数这样的东西.这些常量都在一个配置文件中定义,该文件require_once()基本上直接由应用程序中的每个类组成.

几年前,这将是完全合理的,但从那以后我得到了单元测试错误,这种类之间的紧密耦合真的很困扰我.这些常量闻起来像全局变量,它们在整个应用程序代码中直接引用.

这还是个好主意吗?将这些值复制到一个对象并使用这个对象(即一个Bean,我说它)通过依赖注入将它们传递给与数据库交互的类是否合理?我是通过这样做来击败PHP常量的任何好处(比如速度或其他东西)吗?

我正在考虑的另一种方法是创建一个单独的配置PHP脚本进行测试.我仍然需要想办法让测试中的类使用沙箱配置脚本而不是全局配置脚本.这仍然感觉很脆弱,但可能需要对整个应用程序进行较少的彻底修改.

php tdd unit-testing dependency-injection

15
推荐指数
2
解决办法
2195
查看次数

在Jenkins Maven作业中显示自定义测试结果

我刚刚在现有的Maven POM中添加了一些Python单元测试,但我似乎无法让Jenkins在运行构建时报告测试结果.

我正在"测试"阶段使用exec-maven-plugin从Maven 运行鼻子测试.测试从Jenkins作业成功运行,并生成与目标/ surefire-reports/TEST-nosetests.xml的xUnit兼容测试报告,但Jenkins没有获得结果.

有趣的是,Maven还报告在执行测试套件之前没有运行任何测试:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- exec-maven-plugin:1.1.1:exec (nosetests) @ server ---
[INFO] ................
[INFO] ----------------------------------------------------------------------
[INFO] Ran 16 tests in 194.799s
[INFO] 
[INFO] OK
[INFO] Registering compile source root /Volumes/Data/workspace/myProject/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

那么这是Jenkins没有看到结果的问题,还是Maven没有将我的测试套件视为实际测试?

continuous-integration maven jenkins

10
推荐指数
1
解决办法
1万
查看次数

拼接Mercurial存储库时间轴中的不连续性

几个月前我将一个Subversion存储库转换为Mercurial,最终我在修订历史中留下了两个毫无意义的空白.我想知道我是否可以拼凑出差距,但我无法让工具完全按照我的意愿去做.

我在项目的早期两次重组了Subversion repo:首先将单个项目根转换为trunk/branches/tags布局,然后在第二个根文件夹中添加第二个相关项目,并使用它自己的trunk/branches /标签.

当我决定切换到Mercurial时,在第一个原始项目的主干之外没有重大的开发活动.我能够使用Mercurial转换实用程序和路径映射来重新组合新的Mercurial存储库中的单个敏感主干,或者我认为.

现在我意识到我有两个额外的头,每个头对应于更改历史基本上从哪里开始:

r0 ... r16 | (r17) r18 ... r61 | (r62) r63 ... tip
Run Code Online (Sandbox Code Playgroud)

中断后的两个修订版本r17和r62的结果在内容上与中断前的相应修订版本相同 - 它们完全由文件添加操作组成,其内容与先前版本完全相同.有意义的更改仅在下一次修订时开始(分别为r18和r63).

我试图将r17和r62拼接在一起,但是它会在默认分支的顶端(此时为r405)连接拼接变换集.

这些额外的头脑并没有真正伤害我的开发活动,所以我已经放了一段时间.推动我解决这个问题的原因是,每当我从远程存储库中取出时,MercurialEclipse会抱怨这些额外的头部.

任何人都可以就如何处理此问题提出任何建议吗?我只是错误地命令标志,或者我使用了错误的工具?我应该使用Rebase扩展吗?那些我们以前用Subversion做的dump-edit dumpfile-reload过程怎么样?

当我将项目发布到我的开发服务器时,那里只有几个克隆,因此销毁这些副本并重新克隆应该不是什么大问题.

mercurial dvcs rebase

7
推荐指数
1
解决办法
274
查看次数