Back to Repositories

Testing JAR-Based Subscriber Implementation in greenrobot/EventBus

This test suite validates the functionality of EventBus subscriber registration and event handling when the subscriber class is located in a JAR file. It ensures proper event dispatching and message collection across different data types in a JAR-based implementation.

Test Coverage Overview

The test coverage focuses on verifying EventBus functionality with JAR-based subscribers.

Key areas tested include:
  • Subscriber registration from JAR files
  • Event posting with string messages
  • Event filtering and collection
  • Type-specific event handling

Implementation Analysis

The testing approach utilizes JUnit to validate EventBus integration with JAR-packaged subscribers. The implementation demonstrates a clean pattern for testing event-driven architectures, using builder pattern for EventBus instantiation and direct event posting verification.

The test validates both string and integer event types, ensuring type-safety in event handling.

Technical Details

Testing tools and configuration:
  • JUnit test framework
  • EventBus builder configuration
  • SubscriberInJar test class
  • Assert statements for validation
  • Collection-based result verification

Best Practices Demonstrated

The test exemplifies several testing best practices:

  • Isolated test environment using builder pattern
  • Clear test method naming
  • Specific assertion checks
  • Proper event type handling
  • Clean setup and verification structure

greenrobot/eventbus

EventBusTestJava/src/main/java/org/greenrobot/eventbus/EventBusSubscriberInJarTest.java

            
/*
 * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.greenrobot.eventbus;

import org.junit.Assert;
import org.junit.Test;

public class EventBusSubscriberInJarTest {
    protected EventBus eventBus = EventBus.builder().build();

    @Test
    public void testSubscriberInJar() {
        SubscriberInJar subscriber = new SubscriberInJar();
        eventBus.register(subscriber);
        eventBus.post("Hi Jar");
        eventBus.post(42);
        Assert.assertEquals(1, subscriber.getCollectedStrings().size());
        Assert.assertEquals("Hi Jar", subscriber.getCollectedStrings().get(0));
    }
}