1

我正在尝试在 jar 库中测试一个方法,并希望使用 Robolectric 进行单元测试,而不是在 Android 模拟器中运行测试。我遇到了一个问题,Robolectric 需要一个不存在的 androidmanifest.xml 文件,因为我正在构建一个库......

有没有什么方法可以在没有应用程序的情况下运行 Robolectric 测试?

这是我的测试用例和被测代码的样子:

public class ObjectUnderTest {
    methodUnderTest(View v) {
        ...
    }
}

@RunWith(RobolectricTestRunner.class)
public class Tests {
    @Test
    public void methodUnderTest_Test() {
        ...
    }
}

当我运行测试套件时,我从 Robolectric 得到一个 FileNotFoundException 来寻找 androidmanifest.xml。我已经尝试使用 JUnit4 测试运行程序,但后来我得到了“存根!” 当我为 methodUnderTest() 的参数创建视图时出现异常。

除了为单元测试创​​建一个存根应用程序之外,还有其他方法吗?谢谢!

4

1 回答 1

1

这取决于您使用的是哪种 Robolectric。

如果您使用 2.0,您可以尝试使用 @Config(manifest=Config.NONE) 注释您的测试类。

如果您使用 1.x,我认为这是可行的,但需要更多的努力:

  1. 您应该在文件夹中创建类似于 Android 项目的结构并在其中创建虚拟 AndroidManiifest.xml
  2. 您应该扩展 RobolectricTestRunner 并通过构造函数路径传递到这个假的 Android 项目
于 2013-05-08T05:03:37.757 回答