No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.travis.yml
README.md
pom.xml

README.md

Different Java utility

Build Status Maven Central

This is a utility for simplifying the writing of tests.

Getting started

Dependency:

<dependency>
  <groupId>com.antkorwin</groupId>
  <artifactId>common-utils</artifactId>
  <version>1.0</version>
</dependency>

Guard

Guard helps you, when you need to check a some boolean condition and expect a throws Exception if condition is false.

Guard.check( 02 + 010 != 12, CruelJavaWorldException.class, "ooops");

Guard.check( object != null, WrongArgumentException.class, "Object must be not null");

Guard check

You can use this tool while writing a test, to make tests for a checking throw of the exception more readable.

@Test
public void guardWithoutErrorInfo() {

    GuardCheck.check(() -> { throw new IndexOutOfBoundsException(); },
                     IndexOutOfBoundsException.class);
}


@Test
public void testGuardCheck() {

    GuardCheck.check(() -> {
                         throw new NotFoundException(TestErrorInfo.TEST_ERROR);
                     },
                     NotFoundException.class,
                     TestErrorInfo.TEST_ERROR);
}

ErrorInfo

You can use it with an ErrorInfo to accumulate all you domain specific exceptions in an one enum-file:

@ErrorInfoUnique
public enum TestErrorInfo implements ErrorInfo {
    TEST_ERROR("error"),
    TEST_ERROR_ARG("wrong arg");

    private static final int BASE = 1000;
    private final String msg;

    TestErrorInfo(String msg) {
        this.msg = msg;
    }

    @Override
    public String getMessage() {
        return this.msg;
    }

    @Override
    public Integer getCode() {
        return BASE + ordinal();
    }
}

and sample of a test case :

Guard.check(a != b, TestErrorInfo.TEST_ERROR);

Collision Detector for ErrorInfos

In order to ensure the uniqueness of codes in a whole project, you can use enums which implements an ErrorInfo interface.

@Test
public void assertInPackage() {   
    // Act & assert
    ErrorInfoCollisionDetector.assertInPackage("com.demo.project");
}

Utils to work with Garbage Collector

GcUtils

You can use this tool to run the garbage collector and finalize unused memory in your junit tests.

@Test
public void testWeakAfterGC() {
    // Arrange
    String instance = new String("123");
    WeakReference<String> ref = new WeakReference<>(instance);

    // Act
    instance = null;
    GcUtils.fullFinalization();

    // Asserts
    Assertions.assertThat(ref.get()).isNull();
}

Simple memory LeakDetector

You can check a memory leak in your code for a particular object.

@Test
    public void testWithLeak() {
        // Arrange
        Foo foo = new Foo();
        Foo bar = foo;
        LeakDetector leakDetector = new LeakDetector(foo);

        // Act
        foo = null;

        // Asserts
        leakDetector.assertMemoryLeaksExist();
    }