0

我正在尝试使用 ServletUnit 来测试 servlet,特别是名为 SignedNotesServlet.java 的 java 文件来实现 JUnit 单元测试。该测试类与 SignedNotesServlet.java 位于同一目录中。我正在使用 Eclipse。

但是,我无法为作为 ServletUnit 和 HttpUnit 的一部分的 registerServlet 方法编写正确的语法。我还没有运行程序。我收到的错误是

令牌上的语法错误,应改为 FormalParameter

令牌“类”的语法错误,应为标识符

标记的语法错误,错误的构造

令牌“SignedNotesServlet”的语法错误,FormalParameterList 无效

这是我的代码:

package notetaker;
import com.meterware.servletunit.ServletRunner;
import com.meterware.servletunit.ServletUnitClient;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.fail;

public class SignedNotesServletTest {

    ServletRunner sr = new ServletRunner();
    sr.registerServlet( "SignedNotesServlet", SignedNotesServlet.class.getName() );
    private SignedNotesServlet signednotes;
    @Test
    public void test() {
        fail("Not yet implemented");
    }

}

我想我使用http://tinyurl.com/ku7huss中的说明正确地将 jar 文件添加到构建路径中。我使用http://tinyurl.com/b55fn作为我的主要参考,但也在查看网络上的几个 registerServlet 示例(我无法发布这些链接以供参考,因为我需要 10 个声誉才能发布超过 2 个链接) . 我不完全确定可能出了什么问题,因为我基本上是从第二个网站复制粘贴并做出(我认为的)适当的更改。

我还认为“SignedNotesServlet”可能有问题,因为错误中有四引号,我删除了它们,但它仍然没有解决,而且我认为这无论如何都不是正确的语法,基于关于例子。

4

1 回答 1

1

这就是问题:

sr.registerServlet( "SignedNotesServlet", SignedNotesServlet.class.getName() );

此语句不在方法或构造函数中 - 它必须在。要么把它放在测试本身中,要么把它放在一个设置方法中。如果您将该代码放入单独的测试中,我还建议sr为该测试创建一个局部变量。如果你把它放到一个设置方法中,你sr仍然需要是一个实例变量,但我建议将它设为私有并给它一个更有用的名称。

我不完全确定可能出了什么问题,因为我基本上是从第二个网站复制粘贴的

但是你把它复制到了一个不合适的地方。请注意,这与 servlet、JUnit、ServletUnit 或您的构建路径无关——它只是无效的 Java。

于 2013-06-03T12:26:29.313 回答