2012-02-27 65 views
-3

我在理解普通的一段java代码和通过JUnit测试的代码之间的区别时遇到了问题。在我的代码和JUNIT测试中遇到问题

我在过去的4周里每周都会为学校写过评论,而且我已经得到了0/100(自动标记),但是TA对我很好,给了我一些标志着接近正确的答案。

本周我有同样的事情..我有一个代码,我认为是正确的,并遵循作业说明。

你能帮我以某种方式“转换”我的代码,以便通过JUnit测试吗?

谢谢..这里是我的代码应该做的:

所需的(公共)方法的描述:

/* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **

  • @参数字符串表示的inputPath本地文件系统路径
  • 到输入文件
  • @Returns包含字处理>计数映射 *
  • 一个HashMap 10
  • 此方法必须读取文件(由inputFilePath标识)的内容,同时
  • 一个字符,查找文件中的作者,并保持作者的跟踪
  • 计数的java.util.HashMap中。
    • 的作者定义为出现
  • 的“”和“”标签其自身内部出现“”和“”标签之间
  • 字符的连续序列。
  • ''是一个开始标签,和''对应的结束标签。同样,
  • ''是一个开始标签,和''其对应的结束标签。*
  • 与HW4一样,您必须使用状态转换图来识别这些标签,并在它们之间的文本识别这些问题的解决方案
  • 。 *
  • 您还必须准备绘制一张合适的状态转换图,以便于下周的写作。
    • 您只能使用CharacterFromFileReader从输入
  • 文件读取字符。 * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **/

,这里是我的代码:

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

你可以发布你的作业问题吗?所以我们知道这个源代码试图做什么。然后我们可以看看它,并给你更多的信息。 – Halfwarr 2012-02-27 02:16:40

+0

或者提供JUnit测试用例(如果有的话)...我假设您的代码应该由您的老师给出的测试用例调用。 – NightWolf 2012-02-27 02:39:29

回答

1

JUnit是只是用于测试的工具是一个程序做什么它应该做的。例如,它可用于调用方法并检查它是否返回期望值。程序是否通过测试完全取决于测试写入的内容。

这听起来像你的助教使用JUnit来评分你的家庭作业课程。如果你的代码没有通过测试,那意味着它没有做测试期望的事情。为了解决这个问题,你需要知道测试期望的结​​果。与您的TA谈谈哪些JUnit测试失败;这应该会帮助你理解你的代码做错了什么。

顺便说一句,将@Test注释放在你的方法上不会有帮助。该注释说你的代码的一个JUnit测试。它与测试 JUnit测试无关。