问题1、Cannot connect to VM  socket closed

在使用JUnit进行测试的时候,遇到这个问题。网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还是本地JVM都会进行Socket通讯.发生这样的错误是由于这些软件会修改winsock,还会监听和占用一些端口,Socket通讯不上造成的。

我通过cmd →ping localhost ,发现localhost指向::1,这是因为我的系统是win7 ,它支持IPv6的原因。而Eclipse需要localhost指向127.0.0.1。于是就修改hosts文件(C:\Windows\System32\drivers\etc\hosts)。发现hosts中有两行被注释掉了(#后的东西代表被注释掉了)。

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# :: localhost

然后,去掉127.0.0.1前的#号,就可以了。如果没有127.0.0.1   localhost这行,则自己手动添加上去。这样我们就将localhost重定向为127.0.0.1了。

这个问题也可能是本地的配置文件被修改,或防火墙开着的原因。如果本地文件被修改,那么在cmd命令行里面输入netsh winsock reset命令就可以解决。

问题2:在Android中进行单元测试,需要在项目中的Manifest.xml文件中添加一些必要的配置。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bang.test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name"> <!-- 在本应用中导入需要使用的包,放在application里面activity外面 -->

<uses-library android:name="android.test.runner" />

        <activity android:name=".JunitTestActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>

<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />

    <!-- 记住这个一要放在application外面,不然会出现配置错误 信息 -->
    

<instrumentation android:name="android.test.InstrumentationTestRunner"

          android:targetPackage

="com.bang.test" android:label="Tests for My App" />

</manifest>

必须要添加的配置,已经在上面的示例配置文件中用灰色背景标出来了,配置需要放置Manifest中的位置在注释中。

根据自己的程序,在AndroidManifest.xml文件中配置上面的信息。如果上面的信息配置正确,鼠标右键单击工程,选择Run As\Run configurations,在Android JUnit Test选项中选择工程,将会看到下面这个界面:

在Instrumentation runner后的列表框选项中,我们看到android.test.InstrmentationTestRunner,并处于当前选择状态。如果这个没 有选择框中没有任何选项,就说明AndroidManifest.xml配置有问题。

问题3、Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'

1、首先确保你已经引入了JUnit测试框架,添加的办法是:右键点你的项目→选中“Build Path”→选中“Configure Build Path…”→在Libraries选项卡中点击“Add Library”(如下图)→ 添加JUnit4测试框架

2、记得在“Order and Export”选项卡中添加JUnit 4的依赖(如下图)。

问题4、在Android项目中的测试类点击"run as JUnit test"出错

控制台中会有一段错误提示

Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (javaClasses.cpp:), pid=, tid=
# fatal error: Invalid layout of preloaded class
#
# JRE version: (.0_40-b43) (build )
# Java VM: Java HotSpot(TM) Client VM (24.0-b56 mixed mode windows-x86 )
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\我的文档\workspace\solarTest\hs_err_pid5560.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#

后面发现是debug configuration的问题。我的测试项目的BootStrap Entries,默认是Android2.3.3。只要去掉这个东西就行了。只要右键点你的项目→选中“Debug As”→ 选择“Debug Configurations”→然后按下图操作,去掉对Android2.3.3的启动依赖即可。

参考链接

如何进行Android单元测试

Android上的单元测试

在Android上实现Junit单元测试的四部曲

在Android中进行单元测试遇到的问题的更多相关文章

  1. Android中的单元测试

    2015年5月19日 23:10     在Android中,已经内置了Junit所以不需要在导包.只要继承AndroidTestCase类就可以了.     首先需要修改AndroidManifes ...

  2. 在android中进行单元测试的步骤

    若不知道怎么配上面两个参数 

  3. Android中使用HTTP服务

    在Android中,除了使用java.net包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache Ht ...

  4. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  5. Android中如何使用JUnit进行单元测试 eclipse

    Android中如何使用JUnit进行单元测试 在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期. Andr ...

  6. Android中后台的劳动者“服务”

    前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...

  7. Android笔记——Android中数据的存储方式(三)

    Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...

  8. Android系列----JUnit单元测试的使用

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. Android中的单位及测试相关概念

    android中的单位: in 英寸 pt 点距 px 像素  dp(dip) 密度无关的像素单位,自适应device屏幕的比例,通常涉及长宽高时采用 sp 与范围无关的像素单位,通常在设置字体大小时 ...

随机推荐

  1. nagios二次开发(二)---nagios和nagiosql合并与取舍

    NAGIOS做前台 上一篇本人分析了nagios和nagiosql的优缺点,根据之前的使用经验及探索.决定将nagios做为监控数据的展示层,暂称做“前台”.将nagiosql做为监控体的配置层,暂称 ...

  2. SqlServer2008R2附件数据库失败

    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) 该经验介绍如何处理该 ...

  3. Cadence学习之——多部分元件原理图封装的画法

    在这里以NE5532为例 1.打开新建元件的属性设置框 (1)这里的Package per Pkg设置框就是用来设置元件共有几个部分的. (2)Package Type有两个选项Homogeneous ...

  4. Linux系统编程-防止僵尸进程产生的常用方法

    1.父进程调用wait函数或waitpid函数回收子进程. 2.让init进程去处理子进程回收工作,代码中加上"signal(SIGCHLD, SIG_IGN)"这句话.

  5. Python全栈之路6--正则表达式

    正则本身就是一门语言: 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,在文本处理方面功能非常强大,也经常用作爬虫,来爬取特定内容,Python本身不支持正则,但是通过导入re模块 ...

  6. 用T-sql 实现Oracle Connect by 的功能

    ; with subDepartment as ( select BesonDepartmentID, DepartmentName, ParentBesonDepartmentID, 1 as Hi ...

  7. linux卸载openJDK并安装sun jdk

    linux下卸载openJDK并安装java 1.查找现在有的jdk rpm -qa | grep java 2.删除jdk rpm -e --nodeps java----- 3.安装jdk 下载j ...

  8. Segmetation fault你来的真不是时候

    问题是这样的,今天一个简单的C程序,用gcc编译成汇编语言后,本来想在里面改点东西,结果运行时就报了"Segmetation fault".它丫来的还真不是时候,刚好最近正好烦它呢 ...

  9. VS快捷键设置

    设置VS快捷键,这里以关闭当前窗口为例子: 步骤: 1.tool=>option=>environment=>keyboard 2.百度关闭当前窗口的command是什么,百度出来是 ...

  10. python学习之路-day5-模块

    本节内容: 模块详解 1.模块定义 2.os&sys模块 3.time&datetime模块 4.random模块 5.shutil模块 6.shelve模块 7.configpars ...