首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓TestCase Junit3

安卓TestCase Junit3
EN

Stack Overflow用户
提问于 2013-04-26 06:47:43
回答 1查看 280关注 0票数 0

我正在尝试测试下一段代码:

代码语言:javascript
复制
public class MessagerTest extends TestCase  {
Messager mClassToTest;
Context mArg1;
String mArg2;
protected void setUp() throws Exception {
     mClassToTest=new Messager();
     mArg1= getTestContext();
     mArg2= "5556";
    super.setUp();
}

protected void tearDown() throws Exception {
    super.tearDown();
}

 public void testscreateConnection(){
     assertTrue(mClassToTest.createConnection(mArg1, mArg2));
 }

 public void testsadd()
 {
     assertEquals(11, mClassToTest.add(5, 6));
 }

 /**
  * @return The {@link Context} of the test project.
  */
 private Context getTestContext()
 {
     try
     {
         Method getTestContext = ServiceTestCase.class.getMethod("getTestContext");
         return (Context) getTestContext.invoke(this);
     }
     catch (final Exception exception)
     {
         exception.printStackTrace();
         return null;
     }
 }
 }

我正在测试的代码是

代码语言:javascript
复制
public boolean createConnection(Context context, String number)
{
    DatabaseHandler db = new DatabaseHandler(context);

    contact = db.getContactByNumber(number);
    String id = String.valueOf(contact.getID());

    if(id.equals("0"))
    {
        // send message
        PendingIntent pi = PendingIntent.getActivity(context, 0,
                new Intent(context, CreateConnection.class), 0);

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm",
                Locale.UK);

        currentDateandTime = sdf.format(new Date());

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(number, null, "1|031|", pi, null);

        // add to db
        db.addContact(new Contact("", number, "", 
                "", 2, "40", currentDateandTime)); 

        return true;
    }else{
        return false;
    }
}

由于某些原因,当我为testscreateConnection运行测试时,它似乎在contact = db.getContactByNumber(number);的第一行使用NullPointerException失败。失败发生在函数SQLiteDatabase db = this.getReadableDatabase();的第一行

getContactByNumber代码:

代码语言:javascript
复制
 public Contact getContactByNumber(String number)
    {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
                KEY_NAME, KEY_PH_NO, KEY_PUB_KEY, KEY_IDENTIFIER, KEY_DELETE,
                KEY_STATUS, KEY_DATETIME }, KEY_PH_NO + "=?",
                new String[] { number }, null, null, null,
                null);

        if(cursor.getCount() > 0)
        {
            if(cursor != null)
            {
                cursor.moveToFirst();
            }

            Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2), cursor.getString(3),
                    cursor.getString(4), Integer.parseInt(cursor.getString(5)),
                    cursor.getString(6), cursor.getString(7));

            // return contact
            return contact;
        }else{
            Contact contact = new Contact();
            return contact;
        }
    }

我该如何着手解决这个问题呢?这让我觉得数据库在测试版本中并不存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 08:58:07

我必须更新测试用例中的第一行,将TestCase更新为ActivityTestCase,将context更新为mArg1= getInstrumentation().getTargetContext();

代码语言:javascript
复制
public class MessagerTest extends ActivityTestCase  {
Messager mClassToTest;
Context mArg1;
String mArg2;
protected void setUp() throws Exception {
     mClassToTest=new Messager();
     mArg1= getInstrumentation().getTargetContext();
     mArg2= "5558";
    super.setUp();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16225992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档