我在项目上的纯Java文件上运行纯JUnit4 Java测试,但是如果不手动将其公开,我将找不到一种清晰地使用@VisibleForTesting的方法。

前任:

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

该方法必须是public才能使其对测试“公开”,但是在那种情况下,注释没有意义吗?如果批注什么都不做,为什么不只使用注释呢?

最佳答案

如果该方法在相应的测试程序包中(与生产代码相同的程序包名称),则将方法设置为package-private,该测试将能够看到它。

@VisibleForTesting
Address getAddress() {
  return mAddress;
}

还可以考虑重构代码,这样就不必显式测试私有(private)方法,而是尝试测试公共(public)接口(interface)的行为。难以测试的代码可能表明可以对生产代码进行改进。

注释的重点是它的约定,可以在静态代码分析中使用,而注释则不能。

关于java - 如何使用VisibleForTesting进行纯JUnit测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33267820/

10-11 22:10
查看更多