2014-01-23 38 views
0

我有,所以我在这里创造一个实用程序类,它具有一些共同的无国籍方法几班就是一个例子方法:需要测试静态的Utils类

public class FileUtil { 
    private static final int kFILEBUFSIZE = 128; 
    private static FileUtil fSingleton; 

    public static synchronized FileUtil instance() { 
    if(fSingleton == null) 
     fSingleton = new FileUtil(); 
    return fSingleton; 
    } 
..... 

因此,所有使用这些方法做一个静态的类导入Util类。现在问题出现在我测试时,静态方法不能被覆盖。创建一个所有其他类都扩展的基类会更好吗(不是真的遵循“是”主体),还是只是将需要被重写的静态方法移动到主类中?

在我的测试中,我想重写实例()并返回一个模拟对象。

+1

为什么你需要在测试过程中覆盖这些方法呢?除非他们使用一些外部依赖,这是一种痛苦的工作,只要保持原样。你真的不需要将你正在测试的代码与所有*其他代码隔离开来。 –

+0

当你回答的时候我写的是完全一样的东西:D –

+0

作为一个方面说明,你会让你的Util类最终并且不会公开构造:) – nachokk

回答

3

我希望这不是实际的代码,因为String在我认识的任何java中没有size()方法。

测试jUnit(或其他单元测试框架)中的方法。

例如


public class TestBlammy 
{ 
    @Test 
    public void test1() 
    { 
     assertEquals(5, Util.sizeOf("12345")); 
     assertEquals(0, Util.sizeOf("")); 
     assertEquals(0, Util.sizeOf(null)); // you don't currently handle this, but should. 
    } 
} 
+0

+1的大小评论 – alecnash