小编Mik*_*ark的帖子

覆盖Java System.currentTimeMillis以测试对时间敏感的代码

有没有办法,无论是在代码中还是在JVM参数中,都可以覆盖当前时间,如System.currentTimeMillis手动更改主机上的系统时钟所示?

一点背景:

我们有一个系统可以运行许多会计工作,这些工作围绕当前日期(即本月的第一天,一年中的第一天等)展开大部分逻辑.

不幸的是,很多遗留代码都会调用诸如new Date()or之类的函数,这些函数Calendar.getInstance()最终都会调用System.currentTimeMillis.

出于测试目的,我们现在仍然需要手动更新系统时钟来操作代码认为运行测试的时间和日期.

所以我的问题是:

有没有办法覆盖返回的内容System.currentTimeMillis?例如,告诉JVM在从该方法返回之前自动添加或减去一些偏移量?

提前致谢!

java testing jvm systemtime

117
推荐指数
7
解决办法
7万
查看次数

Maven交替pom

调用maven构建来指定备用文件来代替标准pom.xml文件名时是否存在参数?

基本上,我需要使用各种配置来运行我的maven构建的测试目标.现在我不得不使用外部脚本来更新具有此配置的标准pom,然后恢复该文件.我宁愿只能维护几个单独的配置文件,并使用我需要的特定文件调用maven.

我想知道的是,是否有某种方法可以覆盖pom.xml,例如

mvn clean test   (uses standard pom.xml)
mvn clean test -Dmaven.source=alternate.xml
mvn clean test -Dmaven.source=alternate2.xml
Run Code Online (Sandbox Code Playgroud)

这可能吗?

pom.xml maven

43
推荐指数
2
解决办法
3万
查看次数

Java中的WITH语句

在VB.NET中,有一个WITH命令可以省略对象名称,只访问所需的方法和属性.例如:

With foo
   .bar()
   .reset(true)
   myVar = .getName()
End With
Run Code Online (Sandbox Code Playgroud)

Java中是否有这样的语法?

谢谢!

java vb.net syntax syntactic-sugar

32
推荐指数
5
解决办法
2万
查看次数

单元测试图形

是否有生成图形的单元测试代码的标准最佳实践?我正在使用Java和jUnit,但我认为这个概念也适用于其他语言.

到目前为止,我能想到的最好的方法是使用Mockito来模拟Graphics对象并断言预先计算的东西,例如(伪代码):

assert that graphics.drawString was called with ("abc", 50, 100)
assert that graphics.setBackgroundColor was called with Color.RED
Run Code Online (Sandbox Code Playgroud)

虽然这一切都很好,但我想知道这是否是正确的方法,或者是否有更多已有的测试图形代码的实践.

java graphics junit unit-testing

6
推荐指数
1
解决办法
1501
查看次数