0

我正在为 android 编写单元测试,这个测试应该验证使用的 url 是有效的,我有一个 url 不变量和错误的方式来执行测试,但是测试没有通过。我正在使用 JUnit。

public class FeedControleTeste extends  ActivityUnitTestCase<TelaFeed> {

    private static Context context;
    private final String FEED_ADDRESS = "http://noticias.gov.br/noticias/rss?id=AFSZW";
    private FeedControle task1, task2;
    private TelaFeed tela;

    public FeedControleTeste() {
        super(TelaFeed.class);
    }

    public void setUp() throws Exception {
        context = getInstrumentation().getTargetContext();
        tela = getActivity();
    }

    public void tearDown() throws Exception {
    }

    public void testTask() {
        final CountDownLatch signal = new CountDownLatch(1);

        try {
            runTestOnUiThread(new Runnable() {
                @Override
                public void run() {
                    task1 = new FeedControle(context, null);
                    task2 = new FeedControle(context, tela);
                    try {
                        task1.execute(FEED_ADDRESS);
                        task2.execute("url_errada");
                    } catch (Exception e) {
                        fail();
                    }
                }
            });

            signal.await(30, TimeUnit.SECONDS);
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

这是我的错误:

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.NullPointerException''. Check device logcat for details"
4

1 回答 1

1

从这段代码中唯一的事情(假设像 getTargetContext() 这样的所有方法确实返回了一些东西)我在下面的行中问自己为什么:

task1 = new FeedControle(context, null);

FeedControle 对象用 null 初始化,而其他时间用 ref 值初始化?

task2 = new FeedControle(context, tela);

但是我不知道这些课程。

于 2013-11-14T13:39:47.320 回答