我的代码和JUNIT TESTING有问题

时间:2012-02-27 01:33:29

标签: java junit switch-statement

我在理解正常的java代码和传递JUnit测试的代码之间的区别时遇到了问题。

在过去的4周里,我每周都有一次学校的报道..而且我已经获得了0/100(自动标记),但TA对我很好,给了我一些分数接近正确答案。

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

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

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

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

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

  • @param表示inputPath的字符串,表示本地文件系统上的路径
  • 到输入文件
  • @returns包含word->计数映射的HashMap *
  • 此方法必须读取文件的内容(由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;

                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

JUnit只是一个测试程序执行它应该做的事情的工具。例如,它可用于调用方法并检查它是否返回预期值。程序是否通过测试完全取决于要检查的测试内容。

听起来你的TA正在使用JUnit对你的家庭作业进行评分。如果您的代码未通过测试,则意味着它没有执行测试所期望的操作。要修复它,您需要知道测试期望的内容。与您的TA讨论哪些JUnit测试失败;这应该可以帮助您了解您的代码出错了什么。

顺便说一句,在你的方法上加@Test注释并不会有帮助。该注释表明您的代码 JUnit测试。它与通过 JUnit测试进行测试无关。