Mockito 在 junit 中的事件

标签 events junit java-ee-6 mockito

我尝试测试由 mockito 模拟的 javax.enterprise.event.Event 但抛出以下异常

Absent Code attribute in method that is not native or abstract in class file javax/enterprise/util/TypeLiteral

类(class)看起来像
public class MyClassTest {
    @Mock Event<MyAlarm> event;
    //...
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    //...
    }
    @Test
    public void myTest() {
        MyClass myClass = new MyClass();
        myClass.event = event;
        //...
        verify(event, never()).fire(any(MyAlarm.class));
        //...
    }
}

我将以下内容添加到 pom.xml(maven 项目)
    <repository>
        <id>glassfish</id>
        <name>GlassFish Maven Repository</name>
        <url>http://maven.glassfish.org/content/groups/glassfish</url>
    </repository>

并在 javax (javaee-web-api) 依赖项前面包含 glassfish-embedded-all
    <dependency>
        <groupId>org.glassfish.extras</groupId>
        <artifactId>glassfish-embedded-all</artifactId>
        <version>3.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>

我做错了什么或我误解了什么?

最佳答案

我犯了一些小错误。本文Unit Testing for Java EE 亚当·比恩 (Adam Bien) 为我指明了正确的方向。
我删除了 javaee-web-api 依赖项并添加了 glassfish-embedded-all 依赖项。我的 pom.xml好像:

    <!-- .... -->
    <dependency>
        <groupId>org.glassfish.extras</groupId>
        <artifactId>glassfish-embedded-all</artifactId>
        <version>3.1.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>-->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>1.8.5</version>
        <scope>test</scope>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>
    <!-- .... -->
  <repositories>
    <repository>
        <url>http://download.java.net/maven/2/</url>
        <id>java.net</id>
        <layout>default</layout>
        <name>java.net</name>
    </repository>
</repositories>

这对我很有效,我可以测试 java ee 事件(或模拟它)。

关于Mockito 在 junit 中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760671/

相关文章:

events - Selenium RC 和输入控制事件

c# Counter 需要点击 2 次按钮才能更新

ios - 设置事件 "repeats every month"的重复发生而不是 "repeats every month, each 31st"ios

jsf-2 - 如何在junit中使用OmniFaces

java - JUnit:没有可运行的方法

c++ - 如何在子小部件下使用eventfilter来捕获自定义事件

java - 如何配置 JUnit 仅在测试方法中忽略 @Before 注释

java - @Model注解和MVC

java - 我将如何向 Activemq 发送消息

jsf - 复合:clientBehavior ==> NotSerializableException: com. sun.faces.facelets.tag.jsf.core.AjaxHandler