Popularity
2.0
Stable
Activity
3.6
-
29
5
2

Programming language: Java
License: Apache License 2.0
Tags: Miscellaneous     Testing     Projects    

ConsoleCaptor alternatives and similar libraries

Based on the "Miscellaneous" category.
Alternatively, view console-captor alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ConsoleCaptor or a related project?

Add another 'Miscellaneous' Library

README

Actions Status Quality Gate Status Coverage Reliability Rating Security Rating Vulnerabilities Apache2 license Maven Central javadoc FOSSA Status Join the chat at https://gitter.im/hakky54/consolecaptor

SonarCloud

ConsoleCaptor

Install library with:

Install with maven

<dependency>
    <groupId>io.github.hakky54</groupId>
    <artifactId>consolecaptor</artifactId>
    <version>1.0.0</version>
    <scope>test</scope>
</dependency>

Install with Gradle

testImplementation 'io.github.hakky54:consolecaptor:1.0.0'

Install with Scala SBT

libraryDependencies += "io.github.hakky54" % "consolecaptor" % "1.0.0" % Test

Install with Apache Ivy

<dependency org="io.github.hakky54" name="consolecaptor" rev="1.0.0" />

Table of contents

  1. Introduction
  2. Usage
  3. Contributing
  4. License

Introduction

Hey, hello there ๐Ÿ‘‹ Welcome, you are visitors I hope you will like this library โค๏ธ

ConsoleCaptor is a library which will enable you to easily capture the output of the console for unit testing purposes.

Do you want to capture logs? Please have a look at LogCaptor.

Advantages

  • No mocking required
  • No custom JUnit extension required
  • Plug & play
  • Zero transitive dependencies

Tested Java versions

  • Java 8
  • Java 11+

See the unit test [ConsoleCaptorShould](src/test/java/nl/altindag/console/ConsoleCaptorShould.java) for all the scenario's.

Usage

Capture console output
public class FooService {

    public void sayHello() {
        System.out.println("Keyboard not responding. Press any key to continue...");
        System.err.println("Congratulations, you are pregnant!");
    }

}
Unit test:
import static org.assertj.core.api.Assertions.assertThat;

import nl.altindag.console.ConsoleCaptor;
import org.junit.jupiter.api.Test;

public class FooServiceShould {

    @Test
    public void captureStandardAndErrorOutput() {
        ConsoleCaptor consoleCaptor = new ConsoleCaptor();

        FooService fooService = new FooService();
        fooService.sayHello();

        assertThat(consoleCaptor.getStandardOutput()).contains("Keyboard not responding. Press any key to continue...");
        assertThat(consoleCaptor.getErrorOutput()).contains("Congratulations, you are pregnant!");

        consoleCaptor.close();
    }
}
Initialize ConsoleCaptor once and reuse it during multiple tests with clearOutput() method within the afterEach method:
import nl.altindag.console.ConsoleCaptor;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;

public class FooServiceShould {

    private static ConsoleCaptor consoleCaptor;

    @BeforeAll
    public static setupConsoleCaptor() {
        consoleCaptor = new ConsoleCaptor();
    }

    @AfterEach
    public void clearOutput() {
        consoleCaptor.clearOutput();
    }

    @AfterAll
    public static void tearDown() {
        consoleCaptor.close();
    }

    @Test
    public void captureStandardOutput() {
        FooService service = new FooService();
        service.sayHello();

        assertThat(consoleCaptor.getStandardOutput()).contains("Keyboard not responding. Press any key to continue...");
    }

    @Test
    public void captureErrorOutput() {
        FooService service = new FooService();
        service.sayHello();

        assertThat(consoleCaptor.getErrorOutput()).contains("Congratulations, you are pregnant!");
    }

}

Contributing

There are plenty of ways to contribute to this project:

  • Give it a star
  • Join the Gitter room and leave a feedback or help with answering users questions
  • Submit a PR

License

FOSSA Status


*Note that all licence references and agreements mentioned in the ConsoleCaptor README section above are relevant to that project's source code only.