我在理解正常的java代码和传递JUnit测试的代码之间的区别时遇到了问题。
在过去的4周里,我每周都有一次学校的报道..而且我已经获得了0/100(自动标记),但TA对我很好,给了我一些分数接近正确答案。
本周我有同样的事情。我有一个我认为正确的代码,并遵循作业说明。
你能以某种方式帮助我“转换”我的代码,以便通过JUnit测试吗?
谢谢..这是我的代码应该做的事情:
所需(公共)方法的描述:
/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **
这是我的代码:
public class Temp {
@Test public void temp(String path) {
CharacterFromFileReader reader = new CharacterFromFileReader(path);
HashMap<String, Integer> map = new HashMap<String, Integer>();
int authorCount = 0;
int state = 0;
String s = "";
for (int i=0; i<s.length(); i++) {
while (reader.hasNext()) {
char c = s.charAt(i);
switch (state) {
case 1:
if (c == '<') {
state = 2;
}
break;
case 2:
if (c == 'D') {
state = 3;
} else {state = 1;}
break;
case 3:
if (c == '>') {
state = 4;
} else {state = 1;}
break;
case 4:
if (c == '<') {
state = 5;
} else {state = 4;}
break;
case 5:
if (c == 'A') {
state = 6;
} else {state = 4;}
break;
case 6:
if (c == '>') {
state = 7;
} else {state = 4;}
break;
case 7:
if (c != '<') {
s += c;
} else if (c == '<') {
state = 8;
} else {state = 7;}
break;
case 8:
if (c == 'a') {
state = 9;
} else {state = 7;}
break;
case 9:
if (c == '>') {
state = 10;
authorCount++;
map.put(s, authorCount);
} else {state = 7;}
break;
case 10:
if (c == '<') {
state = 11;
}
break;
case 11:
if (c == 'A') {
state = 5;
} else if (c == 'd') {
state = 12;
} else {state = 10;}
break;
case 12:
if (c == '>') {
System.out.println(map);
}
break;
}
}
}
}
}
答案 0 :(得分:1)
JUnit只是一个测试程序执行它应该做的事情的工具。例如,它可用于调用方法并检查它是否返回预期值。程序是否通过测试完全取决于要检查的测试内容。
听起来你的TA正在使用JUnit对你的家庭作业进行评分。如果您的代码未通过测试,则意味着它没有执行测试所期望的操作。要修复它,您需要知道测试期望的内容。与您的TA讨论哪些JUnit测试失败;这应该可以帮助您了解您的代码出错了什么。
顺便说一句,在你的方法上加@Test
注释并不会有帮助。该注释表明您的代码是 JUnit测试。它与通过 JUnit测试进行测试无关。