junit测试——其实能提高代码效率和质量
来源:互联网 发布:电脑测温度软件 编辑:程序博客网 时间:2024/05/21 09:14
多数情况下我在代码里面会在一些容易出错的地方加入Log.i等打印日志的语句,这样可以直接在运行后清楚地看到一些无法在界面上看到的中间数据的结果,但这样往往十分局限,和调试一样一次只能测试一条数据。所以有时写测试代码显得很有必要,不要觉得这是QA做的而不愿去写,你在给自己找茬的时候思维往往更活跃,如果是在你思路不是很清晰请就写测试代码,那么你将能绕过许多坑,是你自己的编码思路更加清晰,这样效率自然提高了。而且有时候我们会需要静下来一阵让大脑休息休息,这段时间就可以用来跑测试代码了。我们只需要做单元测试就够了,太复杂的反而容易让人感到烦躁,另外测试的数据是可以复杂粘贴的,作为一名程序员要学会懒,懒是我们的基本素养,能复用的就复用。下面这个类中junit.textui.TestRunner.run(newTestSuite(TempTester.class))可以测试TempTester这个类所有以test开头的函数,另外每次测试都会先执行setUp()方法,然后是测试代码,最后是tearDown()方法,也就是将每个测试都区分开,setUp方法中就可以用来读测试数据文本了。
import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import java.io.File;import java.io.FileOutputStream;/** * Created by ShareLone on 2017/10/12. */public class TempTester extends TestCase{ public TempTester(String name){ super(name); } public static void main(String[] args){// junit.textui.TestRunner.run(suite()); junit.textui.TestRunner.run(new TestSuite(TempTester.class)); //所有以test起头的函数都会作测试用例被添加 }// public static Test suite(){// TestSuite suite = new TestSuite();// suite.addTest(new TempTester("testWhat"));// return suite;// } public void testWhat() { int sum = 0; int a = 1; int b = 2; sum = a + b; assertEquals("testWhat", 1, sum); } public void testWho(){ String who = "ShareLone"; assertEquals("testWho", "Solone", who); } FileOutputStream testStream; @Override protected void setUp() throws Exception { //File testFile = new File("text.txt"); //testStream = new FileOutputStream(testFile); } @Override protected void tearDown() throws Exception { //testStream.close(); }}
在正式测试前线放入错误的测试数据,确保你的测试代码是可以测出错误的,上面我这样写显得很没有必要是因为这测试的太简单了,看都能看出来,但具体到复杂的情况就显
得很有必要了。
下面测试代码的运行结果
"E:\DEVELOP SOFTWARE\android Studio\jre\bin\java" -Didea.launcher.port=7540 "-Didea.launcher.bin.path=E:\DEVELOP SOFTWARE\android Studio\bin" -Didea.junit.sm_runner -Dfile.encoding=UTF-8 -classpath "E:\DEVELOP SOFTWARE\android Studio\lib\idea_rt.jar;E:\DEVELOP SOFTWARE\android Studio\plugins\junit\lib\junit-rt.jar;E:\AndroidHelper\SDK\platforms\android-25\data\res;F:\develop place\for android\DGSRCMGSYS2\app\build\intermediates\classes\test\GooglePlay\debug;F:\develop place\for android\DGSRCMGSYS2\app\build\intermediates\classes\GooglePlay\debug;F:\develop place\for android\DGSRCMGSYS2\app\libs\nineoldandroids-2.4.0.jar;C:\Users\DELL\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.6.2\f1bc476cc167b18e66c297df599b2377131a8947\gson-2.6.2.jar;F:\develop place\for android\DGSRCMGSYS2\app\libs\volley.jar;F:\develop place\for android\DGSRCMGSYS2\app\libs\jpush-android-3.0.8.jar;C:\Users\DELL\.android\build-cache\2ab0dee61601cebf5fcf2ffa907897957fd1630e\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\2ab0dee61601cebf5fcf2ffa907897957fd1630e\output\res;F:\develop place\for android\DGSRCMGSYS2\app\libs\commons-net-3.3.jar;F:\develop place\for android\DGSRCMGSYS2\app\libs\BaiduLBS_Android.jar;C:\Users\DELL\.android\build-cache\056da9de2fa64ad050d02711c7812926e7b0e1d3\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\056da9de2fa64ad050d02711c7812926e7b0e1d3\output\res;C:\Users\DELL\.android\build-cache\236b093f726d4cda201c5367a8eac35280015261\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\236b093f726d4cda201c5367a8eac35280015261\output\res;F:\develop place\for android\DGSRCMGSYS2\app\libs\ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar;C:\Users\DELL\.android\build-cache\9c05b71d5c1af8bc8da0d1308bd92547765e869c\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\9c05b71d5c1af8bc8da0d1308bd92547765e869c\output\res;C:\Users\DELL\.android\build-cache\e7fa9f42e6fc98991ae198fc38f2e5589cc9636c\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\e7fa9f42e6fc98991ae198fc38f2e5589cc9636c\output\res;C:\Users\DELL\.android\build-cache\88c49e8bfa735e92b1456d6663cb6a2a8d0531d5\output\res;C:\Users\DELL\.android\build-cache\88c49e8bfa735e92b1456d6663cb6a2a8d0531d5\output\jars\classes.jar;C:\Users\DELL\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.3\42a25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar;F:\develop place\for android\DGSRCMGSYS2\app\libs\jcore-android-1.1.6.jar;C:\Users\DELL\.android\build-cache\f52cbb59a5b07893dda650cf3b73bd20fc675182\output\res;C:\Users\DELL\.android\build-cache\f52cbb59a5b07893dda650cf3b73bd20fc675182\output\jars\classes.jar;C:\Users\DELL\.gradle\caches\modules-2\files-2.1\junit\junit\4.12\2973d150c0dc1fefe998f834810d68f278ea58ec\junit-4.12.jar;E:\AndroidHelper\SDK\extras\android\m2repository\com\android\support\support-annotations\25.3.1\support-annotations-25.3.1.jar;C:\Users\DELL\.android\build-cache\ab40685e30868d5d74fa3c3424409ff6a87b9f2c\output\res;C:\Users\DELL\.android\build-cache\ab40685e30868d5d74fa3c3424409ff6a87b9f2c\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\44fccb449e310e428f19bdb683ea3467bfb157f3\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\44fccb449e310e428f19bdb683ea3467bfb157f3\output\res;C:\Users\DELL\.android\build-cache\61bd77e2d50ca59aec7116270d906aabc1ad3eb6\output\res;C:\Users\DELL\.android\build-cache\61bd77e2d50ca59aec7116270d906aabc1ad3eb6\output\jars\classes.jar;C:\Users\DELL\.android\build-cache\b3c2c9249309b1a670e6329c9afadd245bba111f\output\res;C:\Users\DELL\.android\build-cache\b3c2c9249309b1a670e6329c9afadd245bba111f\output\jars\classes.jar;C:\Users\DELL\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife-annotations\8.0.0\67e564dac5d137ba17cbb464ce66e2bd026ee532\butterknife-annotations-8.0.0.jar;F:\develop place\for android\DGSRCMGSYS2\app\build\intermediates\sourceFolderJavaResources\test\GooglePlay\debug;F:\develop place\for android\DGSRCMGSYS2\app\build\intermediates\sourceFolderJavaResources\GooglePlay\debug;F:\develop place\for android\DGSRCMGSYS2\build\generated\mockable-android-25.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 com.dgsrcmgsys.ui.TempTesterjunit.framework.ComparisonFailure: testWhoExpected :SoloneActual :ShareLone <Click to see difference>...中间省略几十行
junit.framework.AssertionFailedError: testWhat
Expected :1
Actual :3
<Click to see difference>
...中间省略几十行
Process finished with exit code -1
阅读全文
0 0
- junit测试——其实能提高代码效率和质量
- 提升测试效率和质量
- 基于变更的测试 - 提高测试效率和软件质量的最佳方法
- 提高文档质量和效率的办法
- 致力于极致提高开发效率和代码质量之快捷键和TDD
- 如何提高IC测试代码的质量?
- 代码审查——提高代码质量的终极武器
- 利用sourceinsight宏(Quicker.em)提高编码效率和质量
- 利用sourceinsight宏(Quicker.em)提高编码效率和质量
- 项目开发纪要,为了提高开发效率和质量
- 如何衡量和提高测试效率
- 如何衡量和提高测试效率
- 为Java,我们要做点什么? ——提高代码质量
- 提高代码质量——使用FindBug自动Review
- Android Studio 提高代码质量——Inspact Code
- 使用Netbean提高代码开发效率—宏映射和常用快捷键目录
- linux c 提高代码质量的几个测试工具
- 如何提高代码质量?
- 关于解决Python使用pip安装pyjnius时的问题(windows平台)
- JSP基础(十)——JavaBean和表单处理
- 人民币大小写转换 java 实现
- 九度oj:求哈夫曼树(小顶堆数据结构)
- 网狐荣耀版苹果端ipa打包流程说明
- junit测试——其实能提高代码效率和质量
- groub相关总结
- Java Java 9新特性
- 定时任务
- 知识回顾(一)--类的封装
- 复合,继承,委托
- Android横竖切屏生命周期回调情况
- fopen打开文件mode设置缺少‘b’引发的血案
- 分享四种将PDF文件转换为CAD文件的方法,总有一个方法适合你