我需要在android检测测试中模拟一个静态方法。
如果我需要模拟静态方法,则测试类需要为AndroidJUnit4.class
。但我的仪器测试需要与private void LongMethod()
{
for (int i=0; i<number;i++)
{
for (int j=0; j<number; j++)
{
object o = new object();
queue.enqueue(o);
}
}
}
一起运行。
有可能有两个可运行的吗?或者有没有其他方法我可以使用power mock来模拟静态方法?或任何其他模拟静态类的选项?
答案 0 :(得分:3)
要处理1.4版本以来的情况,可以使用JUnit规则而不是运行程序来引导PowerMock。看起来像这样:
@RunWith(AndroidJUnit4.class)
@PrepareForTest(X.class);
public class MyTest {
@Rule
PowerMockRule rule = new PowerMockRule();
// Tests goes here
...
}
但请注意,PowerMock正在使用字节码操作,有人需要将其转换为dalvikVM dex。目前没有工具可以支持(https://groups.google.com/forum/#!topic/powermock/9kwPaWoZ_14,https://stackoverflow.com/a/27956309/624706)