首页 > 解决方案 > 无法在 Parameterized.class junit 测试中未调用 Looper.prepare() 的线程内创建处理程序

问题描述

我想创建一个测试用例,并多次使用相同的测试用例,但数据不同,如下所示。

@RunWith(Parameterized.class)
public class ExampleInstrumentedTest extends TestCase {
    private MainActivity ma = new MainActivity();

    @Parameterized.Parameter(0)
    public float expectedResult;
    @Parameterized.Parameter(1)
    public float firstNum;
    @Parameterized.Parameter(2)
    public float secondNum;

    @Parameterized.Parameters(name = "{index}: testAdd {0} = ({1}+{2})")
    public static Collection<Object[]> testData(){

        Object[][] data = new Object[][]{ {6,2,4}, {7,4,3}};

        return Arrays.asList(data);
    }

    @Test
    public void testAdd() throws InterruptedException {
        float result = firstNum + secondNum;
        Assert.assertEquals(expectedResult, result, .1);
    }
}

这就是最终结果。

在此处输入图像描述

测试确实生成了测试用例,但假设测试用例通过并且没有失败。错误是

java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序

我尝试了所有可用的解决方案,但它仍然显示相同的消息。

标签: androidunit-testingtestingjunitjunit4

解决方案


推荐阅读