2015-10-21 89 views
6

I'm在我的项目我的纯Java文件运行纯Java的JUnit4测试,但我不能找到一种方法,使用@VisibleForTesting显然没有使事情手动公众。如何使用VisibleForTesting纯JUnit测试

例:

@VisibleForTesting 
public Address getAddress() { 
    return mAddress; 
} 

的方法必须是public让它成为“公众”的测试,但在这种情况下,注释没有意义吧?为什么不只是使用注释,如果注释不会无所事事?

回答

18

如果测试位于相应的测试包(与生产代码相同的包名称)中,使方法package-private并且测试将能够看到它。

@VisibleForTesting 
Address getAddress() { 
    return mAddress; 
} 

另外考虑重构你的代码,所以你不需要明确地测试一个私有方法,试着测试一个公共接口的行为。难以测试的代码可能表明可以对生产代码进行改进。

注释的一点是它的约定,可用于静态代码分析,而注释不能。