当前位置: 首页 > 知识库问答 >
问题:

Robolectric测试抛出RuntimeException:java.lang.ClassNotFoundException

韶浩博
2023-03-14

我用Robolectric测试写了一个简单的hello-world。

我已经向build.gradle添加了正确的依赖项:

testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"

下面是我要测试的简单cartmodel.java:

public class CartModel {
    public float totalAmount;
    public int products;

    public void addToCart(float productPrice) {
        products++;
        totalAmount += productPrice;
    }
}
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk=21)
public class CartModelTest {

    @Test
    public void addToCart() throws Exception {
        CartModel cartModel = new CartModel();
        assertEquals(0, cartModel.totalAmount, 0);
        assertEquals(0, cartModel.products);
        cartModel.addToCart(10.2f);
        assertEquals(10.2f, cartModel.totalAmount, 0);
        assertEquals(1, cartModel.products);
    }
}

我运行的是Android Studio2.0预览版3B。

问题是:如何避免失败?

共有1个答案

段干麒
2023-03-14

这很奇怪,但我所要做的就是在Android Studio中禁用即时运行(Preferences->Build,Execution,Deployment->instant run->Enable instant run-uncheck)。

现在所有的测试都通过了。

 类似资料:
  • 我用Spock测试Java代码。我测试这段代码: 我写了一个测试: 它失败是因为抛出了另一个CustomException。但是在块中,我捕获这个异常并抛出一个,因此我希望我的方法将抛出,而不是。如何测试它?

  • 我正在开发和android应用程序。我正在使用reverfit(与OkClient一起使用)来处理api请求,并使用Robolectric来进行测试。我的api如下所示: 有人知道问题是什么吗?似乎由于某种未知的原因,线程被杀死了? 多谢了。 编辑:如果在onNext函数(subscribe的第一个参数)中,我执行第二个请求,那么它就工作了。一切都像预期的那样是同步的。 希望这有帮助。

  • 我目前在我的Android应用程序中同时使用RoboGuice 2.0和Robolectric 1.1。我注意到RoboLooperThread在2.0中消失了,而且我很难调用任何RoboAsyncTask。当主测试线程对调用时,从不调用RoboAsyncTask的方法。我的问题是我如何强制测试线程切换到UI线程和从UI线程切换到UI线程,这样任务就可以执行了? 谢谢, 文斯

  • 我正在尝试集成测试一个ItemReader——下面是一个类: 这是我的豆子。xml: 这是我想写的测试: 我java.lang.ClassCastExctive:com.sun.proxy.$Proxy36不能在之前和之后转换为ItemReader。我错过了什么?是否还有其他需要设置的东西(例如配置xml中的任何注释或条目)?

  • 使用Robolectric的参数化测试 原文链接 : Parameterized testing with Robolectric 译文出自 : 开发技术前线 www.devtf.cn 译者 : Lollypo 校对者: Chaos 状态 : 校对完成 在目前的项目中我们使用Robolectric为Android应用程序编写单元测试,它一直都干的不错。最近我需要编写一个测试用例,通过每次使用不同的