软件工程(2018)第二次个人作业
被这个问题搞崩溃了——记第二次作业开头就遇到难题
本次作业是用Eclipse进行练习自动单元测试技术,由于本人以前接触过JAVA的皮毛,故计算机还残留着以前装的JDK,可能这就是接下来遇到问题的根源。
从网上下好Eclipse后,安装。安装时选择第一项。
Eclipse安装后,去下载最新JDK,进行安装。
由于个人习惯,Eclipse和JDK均未安装在默认目录,而是安装在非系统盘的根目录(路径全为中文),且JDK与旧版JDK在不同盘目录。
一切安装好后,环境变量也设置好了,且在cmd中测试过java、javac、java -version命令,均OK。
打开Eclipse,新建工程1,结果出现如下问题
The project cannot be built until build path errors are resolved
Unbound classpath container:"JRE System Library[JavaSE-9]"in porject"1"
工程不能创建除非构建路径问题解决,未关联类路径为JRE System Library[JavaSE-9](自己翻译的)
首先,我先进行了小白操作:将所以JDK、Eclipse全部卸载,痕迹删除,重新安装,路径默认,还是有以上问题。
没办法,老规矩,网上解决,将英文错误代码输入浏览器。
过滤掉跟tomcat有关的答案(作业没用到tomcat,而且非Eclipse组件)
发现一个好像可以试试的答案
Got to your build path in eclipse as - Right Click (Java Project) -> properties -> Java Build Path -> Libraries. Do you see any jar/library being listed there and having warning or issue icon in front? – Yogendra Singh Oct 8 '12 at 14:51
按照路径打开到Libraries,CLASSPATH中真的有unbound,将其移除
Problems 没有了!
输入测试代码
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public int substract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public int divide(int a, int b) {
// 这里只是最简单的测试demo,暂不做容错处理
return a / b;
}
}
又出现了问题
The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
工程不会建立因为它的构建路径不完整。找不到java.lang.Object的类文件。补充构建路径然后重建工程(自己翻译的)
继续寻找别的答案(我感觉不能只删不加,是不是应该加上什么路径),发现了一个回答
按照所说的,我自己添加Library,添加了JRE System Library,问题又没有了!
作业继续进行
引入单元包JUNIT4时发现问题,与教程不一样的是,我的代码提前输入了,应该在类建完后输入。经过更改后与教程同步(引入JUNIT4单元测试包完成)
引入Junit4测试框架CalculatorTest
右击新建的Java类Calculator,点击New-->Junit Test Case,选择Junit4,Name取calculatorTest1。勾选需要测试的部分以作框架:add,substract,multiply,divide后Finish(这部分忘截图了)。
最终测试框架如下
输入测试代码如图
public class calculatorTest1 {
@Test
public void testAdd() {
assertEquals(8,new calculator().add(4,4));
}
@Test
public void testSubstract() {
assertEquals(3,new calculator().substract(7,4));
}
@Test
public void testMultiply() {
assertEquals(8,new calculator().multiply(4,2));
}
@Test
public void testDivide() {
assertEquals(1,new calculator().divide(4,4));
}
}
右击已输入测试代码的测试框架CalculatorTest,点击Run As-->1 Junit Test,默认选项后测试运行。
得到结果如图
测试成功!
后记:其实一开始的问题解决花了4个小时左右,删除重装了好几次没有解决。网上查了好多答案,也试了好多(一度对自己电脑能否具有编程能力持有怀疑态度),因截图麻烦就没有把错误的解决方法写出(实际上我觉得我还是没有完美解决那个问题,日后说不定有更深理解)。正如老师上课说的,英语很重要,还是外国程序员接触早,问题发现得早,有更多的讨论和解决。本次作业也参考了别的同学的博文(主要是看看有没有跟我遇到过同样问题)。先这样吧,有空再改改。