不在Presenter中使用Android库代码的原因是,当您编写单元测试时,您的类中没有依赖于Android代码,因此它可以直接在JVM上运行.
如果您发现自己需要使用Android代码,那么我这样做的方法是将其隐藏在界面后面.这样,您可以在生产代码中使用一个实现,在测试中使用另一个实现.
因此,创建一个名为Logger的接口:
public interface Logger {
void logd(String tag, String message);
}
Run Code Online (Sandbox Code Playgroud)
然后,对于您的生产代码,您可以使用:
public class LoggerImpl implements Logger {
public void logd(String tag, String message) {
Log.d(tag, message);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当您运行测试时,您可以使用另一个实现:
public class LoggerTestImpl implements Logger {
public void logd(String tag, String message) {
System.out.println(tag + " " + message);
}
}
Run Code Online (Sandbox Code Playgroud)
将Logger依赖项添加到Presenter的构造函数中.在运行时给它一个LoggerImpl,在测试期间给它一个LoggerTestImpl.
另外,您可以考虑首先是否需要从Presenter进行大量日志记录.Android Studio允许您拥有不挂起代码的断点,并在命中时将消息记录到调试控制台.这当然取决于您的要求.
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |