Java Technologies Guava এর জন্য Mockito এবং JUnit Integration গাইড ও নোট

325

Guava ব্যবহার করে Mockito এবং JUnit এর মাধ্যমে Java কোডের টেস্টিং আরও সহজ এবং কার্যকর করা যায়। এটি বিশেষত Immutable Collections, Optional, এবং Cache এর মত Guava এর উপাদানগুলোর টেস্টিংয়ের জন্য উপযোগী।

নিচে Mockito এবং JUnit এর সাথে Guava একত্রে ব্যবহারের জন্য বিস্তারিত আলোচনা দেওয়া হলো:


Guava এবং Mockito Integration

1. Immutable Collections Mock করা

Guava এর Immutable Collections সরাসরি Mockito এর সাথে ব্যবহার করা সম্ভব।

উদাহরণ:

@Test
void testImmutableList() {
    List<String> mockList = mock(List.class);
    when(mockList.size()).thenReturn(3);
    when(mockList.get(0)).thenReturn("A");
    when(mockList.get(1)).thenReturn("B");
    when(mockList.get(2)).thenReturn("C");

    ImmutableList<String> immutableList = ImmutableList.copyOf(mockList);
    assertEquals(3, immutableList.size());
    assertEquals("A", immutableList.get(0));
}

পয়েন্ট: Mock করা Data থেকে Immutable Collection তৈরি করলে Guava এর কনসেপ্ট ঠিক থাকে এবং এটি Test Cases-এ নিরাপদ থাকে।


2. Optional Mock করা

Guava এর Optional এর জন্য Mockito এর when() এবং thenReturn() ব্যবহার করে সহজে টেস্টিং করা যায়।

উদাহরণ:

@Test
void testOptional() {
    Service mockService = mock(Service.class);
    when(mockService.getData()).thenReturn(Optional.of("Mocked Data"));

    Optional<String> data = mockService.getData();
    assertTrue(data.isPresent());
    assertEquals("Mocked Data", data.get());
}

interface Service {
    Optional<String> getData();
}

পয়েন্ট: Optional এর মাধ্যমে NullPointerException এড়িয়ে Mockito ব্যবহার আরও কার্যকর করা যায়।


3. Preconditions এর সাথে Mockito

Guava এর Preconditions ক্লাস এবং Mockito একত্রে ব্যবহার করে Input Validation এর জন্য Behavior নিশ্চিত করা যায়।

উদাহরণ:

@Test
void testPreconditions() {
    Service mockService = mock(Service.class);
    doThrow(new IllegalArgumentException("Invalid Input"))
        .when(mockService)
        .process(Preconditions.checkNotNull(null));

    assertThrows(IllegalArgumentException.class, () -> mockService.process(null));
}

interface Service {
    void process(String input);
}

Guava এবং JUnit Integration

1. JUnit এর মাধ্যমে Immutable Collections টেস্ট করা

Immutable Collections ব্যবহারের জন্য JUnit Assertions ব্যবহার করা যেতে পারে।

উদাহরণ:

@Test
void testImmutableMap() {
    ImmutableMap<String, Integer> map = ImmutableMap.of("A", 1, "B", 2, "C", 3);
    assertEquals(3, map.size());
    assertTrue(map.containsKey("A"));
    assertEquals(1, map.get("A"));
}

2. Optional এর Presence এবং Value টেস্ট করা

Guava Optional টেস্ট করার জন্য JUnit Assertions সরাসরি ব্যবহার করা যায়।

উদাহরণ:

@Test
void testOptionalWithJUnit() {
    Optional<String> optional = Optional.of("Hello, Guava");
    assertTrue(optional.isPresent());
    assertEquals("Hello, Guava", optional.get());
}

3. Guava Cache টেস্টিং

Guava এর CacheBuilder ব্যবহার করলে Caching Behavior সহজে টেস্ট করা যায়।

উদাহরণ:

@Test
void testCache() {
    Cache<String, String> cache = CacheBuilder.newBuilder()
        .maximumSize(100)
        .expireAfterWrite(10, TimeUnit.MINUTES)
        .build();

    cache.put("key1", "value1");
    assertEquals("value1", cache.getIfPresent("key1"));

    cache.invalidate("key1");
    assertNull(cache.getIfPresent("key1"));
}

4. FluentIterable এর জন্য টেস্ট

Guava এর FluentIterable এর উপর JUnit ব্যবহার করে Filtering Behavior টেস্ট করা যায়।

উদাহরণ:

@Test
void testFluentIterable() {
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    FluentIterable<Integer> filtered = FluentIterable.from(numbers)
        .filter(n -> n % 2 == 0);

    List<Integer> expected = Arrays.asList(2, 4);
    assertEquals(expected, filtered.toList());
}

Mockito এবং JUnit এর সমন্বয়ে Guava টেস্টিং

Mockito এবং JUnit একত্রে ব্যবহার করলে Behavior এবং Integration Testing আরও কার্যকর হয়।

উদাহরণ:

Guava Cache Mock এবং Integration Test:

@Test
void testServiceWithCache() {
    Cache<String, String> mockCache = mock(Cache.class);
    when(mockCache.getIfPresent("key")).thenReturn("Mocked Value");

    Service service = new Service(mockCache);
    String value = service.getValue("key");
    assertEquals("Mocked Value", value);
}

class Service {
    private final Cache<String, String> cache;

    Service(Cache<String, String> cache) {
        this.cache = cache;
    }

    String getValue(String key) {
        return cache.getIfPresent(key);
    }
}

Guava এর সাথে Mockito এবং JUnit Integration টেস্টিংয়ের জন্য একটি শক্তিশালী পরিবেশ তৈরি করে। Immutable Collections, Optional, Cache, এবং FluentIterable এর টেস্টিং করা সহজ হয়। সঠিক টেস্ট কৌশল অবলম্বন করলে আপনার প্রজেক্ট উন্নতমানের এবং কম ত্রুটিযুক্ত হবে।

Content added By
Promotion

Are you sure to start over?

Loading...