Android 在没有活动和服务的情况下测试类

Android 在没有活动和服务的情况下测试类,android,junit,Android,Junit,这是我的实际课堂,我正在写下面的测试课 public class ReadFile { private Scanner rx, tx; public void openFile() { try { rx = new Scanner(new File("/sys/class/net/eth0/statistics/rx_bytes")); tx = new Scanner(new File("/sys/class/net/eth0/statistics/t

这是我的实际课堂,我正在写下面的测试课

public class ReadFile {
private Scanner rx, tx;

public void openFile() {
    try {
        rx = new Scanner(new File("/sys/class/net/eth0/statistics/rx_bytes"));
        tx = new Scanner(new File("/sys/class/net/eth0/statistics/tx_bytes"));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public String readRxFile() {
    String rxData = "";
    while (rx.hasNext()) {
        rxData = rx.next();
    }

    return rxData;
}

public String readTxFile() {
    String txData = "";
    while (tx.hasNext()) {
        txData = tx.next();
    }
    return txData;
}

public void closeFile() {
    rx.close();
    tx.close();
}
}
这是考试班。测试读取的数据

public class Testreadrxfile extends TestCase {

public Testreadrxfile() {
    super();
}

protected void setUp() throws Exception {
    try {
        super.setUp();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

ReadFile rf;

public void testappdata() {
   String str1 = rf.readRxFile();
    Assert.assertEquals("14081",str1 );
}

}
这就是我得到的错误

java.lang.NullPointerException
atcom.android.deviceintelligence1.             test.Testreadrxfile.testappdata(Testreadrxfile.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

这不是使用getactivity()或getservice()的活动或服务测试,所以我应该做些什么来避免这个错误。提前感谢您的帮助。

查看您的代码<代码>射频未初始化

ReadFile rf; // not intialisd

public void testappdata() {
   String str1 = rf.readRxFile(); // equivalent to null.readRxFile();
    Assert.assertEquals("14081",str1 );
}

是的,rf没有初始化。在这种情况下,要做的第一件事是将调试器附加到出现错误的行上,在大多数情况下,答案是显而易见的

更新

首先,您的代码不工作,因为您没有初始化rx,现在您的代码不工作,因为您从未调用以下函数。在函数中,您正在初始化扫描仪对象。从readRxFile函数调用此函数,您应该可以开始了

public void openFile() { 
    try { 
        rx = new Scanner(new File("/sys/class/net/eth0/statistics/rx_bytes")); 
        tx = new Scanner(new File("/sys/class/net/eth0/statistics/tx_bytes")); 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
} 

public String readRxFile() { 
    String rxData = ""; 
    while (rx.hasNext()) { //eq. to null.haxNext()
        rxData = rx.next(); 
    } 

    return rxData; 
}

我应该初始化什么。写入rf=getActivity不是活动。就像我现在应该初始化rf一样。我应该初始化什么。写入rf=getActivity不是活动。我现在应该初始化rf.well ReadFile rf=new ReadFile();此外,您还需要在ReadFile类中有一个构造函数,public ReadFile(){}这是基本概念,您需要初始化您的对象,否则您肯定会得到NullPointerException,这意味着某些东西没有初始化并指向“黑洞”