How to test JSP tags?

I have a custom JSP tag

public class HappyTag extends TagSupport { ... }

and now I need to test it.

So, I created a simple JUnit test:

@Test
public void testTag() {
    HappyTag tag = new HappyTag();
}

and I get the following error:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/jsp/tagext/TagSupport
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
(.....)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

I use maven to create and test my application, including tags. My current tag submodule dependencies:

    <dependencies>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>

</dependencies>

plus some dependencies on the parent module:

   <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>


    <dependency>
        <groupId>javax.portlet</groupId>
        <artifactId>portlet-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.portletfaces</groupId>
        <artifactId>portletfaces-bridge-impl</artifactId>
        <version>2.0.0</version>
    </dependency>


    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>el-impl</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>

These dependencies are enough to compile and use tags in my JSP. They are not enough to verify the tag: - (

So what have I done wrong?

Best regards,
Question.

+5
source share
3 answers

Java EE maven , , . snot. , . , ( ), , , API. , .

+1

. ServletContext, javaee.jar.

0

mockito /power mock jsp-. , (doTag). mocking framework javax.el .

0

All Articles