English 中文(简体)
将目前时间与JRE1.4挂钩
原标题:Mocking the current time with JRE 1.4

目前,只有使用JRE1.4(java的运行时间环境),而且有某种时间计算。 我试图对这个类别进行联合测试,但似乎十分困难,因为我所遇到的所有模拟工具都需要有说明,而这种说明没有得到JRE1.4的支持。

我尝试使用JRE1.4友好型 mo子,但不允许我冲破静态班子。 Jmockit有一个超便宜的解决办法,可以下载BUT, 那里似乎有Jmockit的JRE1.4友好版本。

如果使用JRE1.5和以上两种方法(打破目前时间要求或仅仅改变目前的系统时间的方法),那么可以这样说。

唯一的解决办法是把目前的系统时间推到“+/-日/月”方法中。

然而,我希望尽可能在JRE1.4环境下这样做。

增 编

问题回答

为什么不简单地将Java 5用于试验守则? 有了象样的民主选举学会,你就应当能够有单独的测试法单元/项目(Java 5+)和生产法(Java 1.4)。

除了Zsolt的溶解(打包裹)外,另一种可能的办法是用某种方法抽取电,然后对高于这种方法的子级进行检测。

有待测试的法典:

class A{
    protected long now(){
        return System.currentTimeMillis();
    }
}

单位测试:

class ATest{
    public void testStuff(){
        // actual test
    }

    class MyA extends A {
        long currentTime;

        protected long now(){
            return currentTime;
        }
    }
}

我更喜欢包装方法,但分门别类在某些情况下可能有用。

我建议在处理静态方法时使用一个包裹。 例如,就你而言,你可以使用“及时”器:

public class TimeWrapper() {
    public long getCurrentTimeInMillis() {
        return System.currentTimeMillis();
    }
}

在你必须到其他班级时,请上<条码>。 这种解决办法取决于模拟框架和 j。

rel=“nofollow”>easymock 不需要说明,因此它将与1.4国合作。

Or use a special class for all time-related methods, like DateHelper Then you can mock this in your UnitTests and change the time via a static variable.





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签