1

I am having trouble implementing a JUnit test in my android studio project. What I have done is make a class extending AppCompatActivity called SellerMainPage. On this page, I have a TextView. I would like to check that the page opens up correctly and that the TextView is set to the right value. But I get a NullPointerException thrown in the SetUp() function coming from setting the TextView to the seller_main_page.xml file that corresponds to the SellerMainPage.java file.

The line

tv = (TextView) page.findViewById(R.id.textView9);

is where I think the problem is coming from. I have checked that this is indeed the TextView from the .xml document, so I do not know why I get the error.

SellerMainPageTest.java

package com.example.cristiannavarrete.my_shopping;

import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

import junit.framework.TestCase;

import org.w3c.dom.Text;

import java.util.ArrayList;

/**
 * Created by Cristian Navarrete on 12/1/2015.
 */
public class SellerMainPageTest extends ActivityInstrumentationTestCase2<SellerMainPage> {

    private SellerMainPage page;
    private TextView tv;

    @SuppressWarnings("deprecation")
    public SellerMainPageTest() {
        super("com.example.cristiannavarrete.my_shopping.SellerMainPage", SellerMainPage.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        page = this.getActivity();

        tv = (TextView) page.findViewById(R.id.textView9);

    }

    public void testPreconditions() {
        assertNotNull("page is null", page);
        assertNotNull("tv is null", tv);
    }

}

Here is the corresponding xml file

seller_main_page.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/sellerName">

<RelativeLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:text="@string/addProduct"
        android:id="@+id/addProduct"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/viewFinances"
        android:id="@+id/seeFinances"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/addProduct"
        android:layout_centerHorizontal="true">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/sellerInventory"
            android:id="@+id/textView9"
            android:layout_gravity="center_horizontal"
            android:textStyle="bold"
            android:textColor="#4aa260"
            android:textSize="25dp" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="365dp"
            android:id="@+id/scrollView"
            android:layout_gravity="center_horizontal" >

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/sellerListScroll"></LinearLayout>
        </ScrollView>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/goBack"
            android:id="@+id/sellerGoBackButton" />
    </LinearLayout>
</RelativeLayout>

Here is my Log:

java.lang.NullPointerException
at com.example.cristiannavarrete.my_shopping.SellerMainPageTest.setUp(SellerMainPageTest.java:30)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Can someone help explain this to me?

  • 1
    Possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – JFPicard Dec 02 '15 at 21:01
  • 1
    Maybe, he seems to be asking more "how do I configure Android unit test correctly" than asking what the null pointer exception means. – markspace Dec 02 '15 at 21:06
  • 1
    Yeah I was more asking why I am getting the Null Pointer Exception. I set the TextView to be equal to the XML TextView (id=textView9). I don't understand why I am getting the exception. I called page.findViewById(//id of layout), which is basically what I did in my actual activity, so the Exception I am getting confusing. – Cristian Navarrete Dec 03 '15 at 02:59

0 Answers0