如何搭建kunit环境对linux内核进行单元测试

如何搭建kunit环境对linux内核进行单元测试,第1张

要搭建KUnit环境来对Linux内核进行单元测试,首先要准备一个Linux内核源码树,然后在源码树中添加KUnit文件,最后使用Kconfig文件配置KUnit,并运行make命令来编译内核。为了使KUnit正常工作,还需要准备一个测试框架,并将框架中的测试脚本添加到内核源码树中。最后,运行make命令编译内核,便可在Linux内核上进行单元测试。

首先创建个单元测试项目,再在项目中创建一个被测试的类文件,通过单元测试对被测试类里面的一个方法进行测试,为了好解释就写给简单的了,

代码如下:

package com.betest.test

public class betest {

public int test() {

String in = "test"

int b = new Integer(in)

}

}

从上面看代码执行的过程中会出错吧

下面编辑测试文件:

因为是在android项目中使用单元测试,首先需要在项目功能清单文件(也就是AndroidMainfest.xml)中加入调用测试类库。

代码如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.test.test"

android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<!--调用测试类库-->

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

<activity android:name=".MainActivity"

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-sdk android:minSdkVersion="8" />

<!-- 包名要去测试文档包名相同 -->

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

android:targetPackage="com.test.test" />

</manifest>

上面的代码中也就是加入了

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

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

android:targetPackage="com.test.test" />

这两句话。

开始创建测试类,创建个单元测试方法,代码如下:

package com.test.test

import junit.framework.Assert

import com.betest.test

import android.test.AndroidTestCase

import android.util.Log

public class PersonServiceTest extends AndroidTestCase {

public void testtest() throws Throwable{

PersonService service = new PersonService()

service.test()//检验save()方法运行是否正常

}

}

到这里代码已经写完,下面就开始进行测试了,在outline里面找到相应的单元测试方法,右键 找到 Android Junit Test 在日志文件中就可以看到错误原因了。

usb_register_notify,你当前的系统中运行的内核缺少这个函数定义,你这个因为你要安装的模块,并没有在这个你运行的这个系统中编译生成,而是拿别的机器,或者别人的模块安装在你当前的机器上,不提倡。

有源码的话,在你本机上重新编译一次,模块是要和你当前运行的kernel版本相匹配的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8445563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存