Java testing framework for testing pojo methods

Overview

POJO-TESTER - Java framework for pojo-testing

PROJECT IS ON HOLD

I have no time to invest more in this project. See https://github.com/sta-szek/pojo-tester/issues/247

Thank you for using pojo-tester! It has 131 019 (05.06.2020) downloads total! I was not expecting such popularity 🚀


POJO-TESTER is a java testing library, which makes your pojo-tests much easier. You can test your pojo against equals, hashCode, toString, getters, setters and constructors.

Get more information at pojo-tester documentation site

If you have any questions, we can chat on Rocket.Chat

Build status is provided by

Current coverage is codecov

Project quality Codacy Badge

Download latest version Download

Get automatic notifications about new POJO-TESTER versions

Comments
  • Find out the most user friendly pojo tester api for testing

    Find out the most user friendly pojo tester api for testing

    What is the most user friendly / given-when-then convention compatible way to invoke pojo tests?

    // given
    PojoTester tester = new PojoTester();
    PojoTester tester = new PojoTester(fieldValueChanger);
    PojoTester tester = new PojoTester().using(fieldValueChanger);
    
    Class coffee = Coffee.class;
    Class cake = Cake.class;
    
    Class[] classes = new Class[]{coffee, cake};
    
    // when
    
    // then
    tester.test(coffee);
    tester.testAll(coffee, cake,);
    tester.testAll(classes);
    

    OR

    
    // given
    Class coffee = Coffee.class;
    Class cake = Cake.class;
    
    Class[] classes = new Class[]{coffee, cake};
    
    // when
    
    // then
    assertThat(class).using(fieldValueChanger).hasWellImplemented...();
    assertThat(class1, class2).using(fieldValueChanger).haveWellImplemented...();
    

    EXPLANATION

    Currently test and testAll methods throw exception when pojo has invalid equals, hashcode or toString method implementation.

    NESTED CLASSES

    You can also define nested classes to change in your main class e.g.

    A {
      B b;
      C c.
    }
    Class baseClass = A.class;
    Class[] nestedClasses = new Class[]{B.class, C.class};
    
    test(baseClass, nestedClasses )
    

    KIND OF TESTS

    There is no option to choose which tests should be run (equals, hashcode or toString). How do you want to provide it? E.g.

    new PojoTester(EQUALS | HASHCODE | TO_STRING) or new PojoTester().addTesters(new EqualsTester(), ...) or assertThat(class).using(new HashCodeTester()).hasWellImplemented...();

    CHANGING FIELDS

    At this moment you can provide you own fieldsValuesChanger that should change field of specific type e.g. Coffee. In order to do this you have to extend AbstractFieldsValuesChanger class and implement some methods.

    If you do not specify your own fields values changer and pojo tester could not change field value then it sets it either to null or class.instantiate()

    help wanted question blocker 
    opened by sta-szek 6
  • Project Abandoned?

    Project Abandoned?

    Appears that this project is not in active maintenance. There are pull reviews open since 2017. If this is the case, may I suggest flagging it in the README.

    In the interim, this fork https://github.com/obsidiandynamics/pojo-tester has been uplifted to support JDK 13.

    opened by ekoutanov 5
  • Fast test equals v2

    Fast test equals v2

    This is a 2nd thought about fast testing of equals() and hashCode(). No EQUALS_FAST and HASH_CODE_FAST, now .testing(Method.EQUALS, Method.HASH_CODE).quickly() is used instead.

    opened by 36893488147419103231 5
  • "should return different hash codes for non equal objects" seem to be using equal objects

    I have a test that from time to time fails in my Jenkins instance, but never failed on my local machine.

    It fails with the following message:

    Class EntityClass has bad 'hashCode' method implementation.
    The hashCode method should return different hash codes for non equal objects.
    Current implementation returns same hash codes.
    Object:
    EntityClass(f1=www.pojo.pl, f2=www.pojo.pl, f3=-4, f4=Fri Mar 10 14:52:19 UTC 2017, f5=www.pojo.pl, f6=www.pojo.pl)
    and
    EntityClass(f1=www.pojo.pl, f2=www.pojo.pl, f3=-4, f4=Fri Mar 10 14:52:19 UTC 2017, f5=www.pojo.pl, f6=www.pojo.pl)
    should have different hash codes:
    38708309
    and
    38708309
    

    Class code:

    @Getter
    @ToString
    @EqualsAndHashCode
    @AllArgsConstructor
    @NoArgsConstructor(access = AccessLevel.PACKAGE)
    public class EntityClass {
    
        private String f1;
        private String f2;
        private int f3;
        private Date f4;
        private String f5;
        private String f6;
    }
    

    and this is my test

    assertPojoMethodsFor(EntityClass.class)
            .testing(GETTER, TO_STRING, CONSTRUCTOR, EQUALS, HASH_CODE)
            .areWellImplemented();
    

    I suspect the Date f4 field is the same and it is causing issues. BTW. Is there a way to change the test (as I cannot change the production code) so that when it fails, a custom message (provided function) is used instead of toString()? Something along these lines:

        assertPojoMethodsFor(EntityClass.class)
                .testing(GETTER, TO_STRING, CONSTRUCTOR, EQUALS, HASH_CODE)
                .areWellImplemented()
                .messageWhenFails((o1, o2) -> "o1 date" + o1.f4 + " and o2 date" + o2.f4);
    
    bug 
    opened by adamsiemion 5
  • #203 added EQUALS_FAST and HASH_CODE_FAST

    #203 added EQUALS_FAST and HASH_CODE_FAST

    Now it is possible to test equals() and hashCode() in quadratic rather than exponential time (and 20^2 is much better than 2^20 for a POJO with 20 fields corresponding to 20 columns in a DB table). The old thorough testers are preserved.

    opened by 36893488147419103231 4
  • Method.EQUALS: test fails for equal objects

    Method.EQUALS: test fails for equal objects

    Use this setup to reproduce the bug. Two nested classes:

    @Data
    public class A {
        private long userId;
        private B withdraw;
    }
    
    @Data
    public class B {
        private CurrencySymbol currency;
        private Money amount;
        private long account;
    }
    

    Now, here is how I test both classes in a single test case:

        @Test
        public void shouldTestEquals() {
            // given
            final Class[] classesUnderTest = { A.class,
                                               B.class};
            // when
            // then
            assertPojoMethodsForAll(classesUnderTest).create(Money.class, MONEY_CONSTRUCTOR_PARAMETERS)
                                                     .create(CurrencySymbol.class, CURRENCY_SYMBOL_CONSTRUCTOR_PARAMETERS)
                                                     .testing(Method.EQUALS)
                                                     .areWellImplemented();
        }
    

    This results in the following error:

    Class package.A has bad 'equals' method implementation.
    The equals method should return false if objects should not be equal.
    Current implementation returns true.
    Object:
    package.A@d7f2a
    should not be equal to:
    package.A@d7f2a
    pl.pojo.tester.internal.assertion.equals.NotEqualEqualsAssertionError: 
    
    
    Class package.A has bad 'equals' method implementation.
    The equals method should return false if objects should not be equal.
    Current implementation returns true.
    Object:
    package.A@d7f2a
    should not be equal to:
    package.A@d7f2a
    

    Objects are obviously equal, I guess there might be a bug in generators.

    bug 
    opened by SemionPar 4
  • Unexpectedly getting NotEqualHashCodeAssertionError

    Unexpectedly getting NotEqualHashCodeAssertionError

    So I'm basically doing the following on 0.7.6

    assertPojoMethodsFor(IndexedTPE.class).quickly().areWellImplemented();
    

    When I run the test inside of intelliJ I get this:

    pl.pojo.tester.internal.assertion.hashcode.NotEqualHashCodeAssertionError: 
    
    
    Class com.ciena.bp.nsi.indexingservice.model.tpe.IndexedTPE has bad 'hashCode' method implementation.
    The hashCode method should return different hash codes for non equal objects.
    Current implementation returns same hash codes.
    Object:
    IndexedTPE{resourcePartitionInfo=[], id=null, usedCapacity=[], active=null, networkConstruct=null, operationState=null, lastUpdatedState=null, expectations=[], userData=[], identifiers=[], deploymentState=null, lifecycleState=null, resourceState=null, bookingData=null, bookingData_lockout=null, plannedCapacity=[], attributePolicies=null, derivedAttributes=null, plannedAttributes=null, discoveredAttributes=null, extraData=IndexedTPEExtraData{usedCapacityPresent=false, eplServicePresent=false, ftpLagIsOnNni=false, ptpIsNniWithIpInterface=false, ftpLagIsOnNniWithIpInterface=false, ftpLagMultiChassis=false, interfaceIp=, clientTpesSize=0, tdmPortCapacity=true}}
    and
    IndexedTPE{resourcePartitionInfo=[], id=null, usedCapacity=[], active=null, networkConstruct=null, operationState=null, lastUpdatedState=null, expectations=[], userData=[], identifiers=[], deploymentState=null, lifecycleState=null, resourceState=null, bookingData=null, bookingData_lockout=null, plannedCapacity=[], attributePolicies=null, derivedAttributes=null, plannedAttributes=null, discoveredAttributes=null, extraData=IndexedTPEExtraData{usedCapacityPresent=false, eplServicePresent=false, ftpLagIsOnNni=false, ptpIsNniWithIpInterface=false, ftpLagIsOnNniWithIpInterface=false, ftpLagMultiChassis=false, interfaceIp=, clientTpesSize=0, tdmPortCapacity=true}}
    should have different hash codes:
    -172078917
    and
    -172078917
    

    Not sure it matters, but when debugging, I get this instead:

    pl.pojo.tester.internal.assertion.equals.NotEqualEqualsAssertionError: 
    
    
    Class com.ciena.bp.nsi.indexingservice.model.tpe.IndexedTPE has bad 'equals' method implementation.
    The equals method should return false if objects should not be equal.
    Current implementation returns true.
    Object:
    IndexedTPE{resourcePartitionInfo=[], id=null, usedCapacity=[], active=null, networkConstruct=null, operationState=null, lastUpdatedState=null, expectations=[], userData=[], identifiers=[], deploymentState=null, lifecycleState=null, resourceState=null, bookingData=null, bookingData_lockout=null, plannedCapacity=[], attributePolicies=null, derivedAttributes=null, plannedAttributes=null, discoveredAttributes=null, extraData=IndexedTPEExtraData{usedCapacityPresent=false, eplServicePresent=false, ftpLagIsOnNni=false, ptpIsNniWithIpInterface=false, ftpLagIsOnNniWithIpInterface=false, ftpLagMultiChassis=false, interfaceIp=, clientTpesSize=0, tdmPortCapacity=true}}
    should not be equal to:
    IndexedTPE{resourcePartitionInfo=[], id=null, usedCapacity=[], active=null, networkConstruct=null, operationState=null, lastUpdatedState=null, expectations=[], userData=[], identifiers=[], deploymentState=null, lifecycleState=null, resourceState=null, bookingData=null, bookingData_lockout=null, plannedCapacity=[], attributePolicies=null, derivedAttributes=null, plannedAttributes=null, discoveredAttributes=null, extraData=IndexedTPEExtraData{usedCapacityPresent=false, eplServicePresent=false, ftpLagIsOnNni=false, ptpIsNniWithIpInterface=false, ftpLagIsOnNniWithIpInterface=false, ftpLagMultiChassis=false, interfaceIp=, clientTpesSize=0, tdmPortCapacity=true}}
    

    Any suggestions? As far as I can tell the Objects really should be identical...

    opened by fahim-a 3
  • Timestamp break Equals

    Timestamp break Equals

    Testing a pojo with a Timestamp value, break the equals method and then the assertion return false. Here's a minimal example :

    public class MyPOJO {
           private Timestamp timestamp;
    }
        @Test
        public void pojosTest() {
            assertPojoMethodsForAll(MyPOJO.class).areWellImplemented();
        }
    
    opened by hajlaoui-nader 3
  • Issue 192

    Issue 192

    TODO refactor JavaTypeInstantiator.

    • [x] Probably merge with ? PrimitiveInstantiator, StringClassInstantiator, JavaLangClassInstantiator ?
    • [x] resolve todos
    • [x] more refactor
    opened by sta-szek 3
  • time to test equals() and hashCode() depends exponentially on the number of fields

    time to test equals() and hashCode() depends exponentially on the number of fields

    In the project https://github.com/36893488147419103231/pojo-tester-tester in the package testertester.equalshashcode there are tests of 3 classes:

    public class Small {
      int a,b,c
    }
    public class Medium {
      int a,b,c,d, e,f,g,h, i,j,k,l, m,n,o,p ,q,r,s,t, u;
    }
    public class Big {
      int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
    }
    

    with equals() and hashCode() generated by IDE.

    The first class is tested in no time, the second one takes about a minute, and the test for the third one did not terminate for me (but probably it would in about half an hour, unless it would take too much memory). UPD: bigTest failed after 8m 49s with java.lang.OutOfMemoryError: GC overhead limit exceeded.

    It is important to test equals() and hashCode() in linear time.

    I propose the following algorithm:

    Start with 3 POJO objects, one filled with nulls (zeroes, etc.), and two others filled with values that do not repeat (well, it is difficult to find 20 different boolean values). Initially for the class MyPojo {int a,b,c,d;}we have:

    null, null, null, null
    P,Q,R,S
    W,X,Y,Z
    

    On the first iteration, we will compare P, null, null, null with:

    null, null, null, null
    P, null, null, null
    W, null, null, null
    

    On the second iteration, we will compare P, Q, null, null with:

    P, null, null, null
    P, Q, null, null
    P, X, null, null
    

    On the 3rd iteration, we will compare P, Q, R, null with:

    P, Q, null, null
    P, Q, R, null
    P, Q, Y, null
    

    and so on. Of course, you must check that a.equals(b) == b.equals(a), and that objects that are equal have equal hash codes. You may check that the number of different returned hash codes is at least a half of the the number of objects that participated in comparisons. I'd recommend performing additional comparisons on each iteration, e.g. that a.equals(null) == false, that a.equals(a) is true, and that a.equals(1) is false.

    Note. This issue may be related on unrelated to https://github.com/sta-szek/pojo-tester/issues/201

    (UPDATE) Note 2. I believe, it is FieldUtils.permutations() called from ObjectGenerator.generateDifferentObjects() that is responsible for exponential growth. It for N fields, it returns 2^N permutations. If it returned a list of size N, consumption of both time and memory would be linear.

    opened by 36893488147419103231 3
  • Unit test execution time growing when multiple entities

    Unit test execution time growing when multiple entities

    Hello guys I have been noting that when adding multiple class to test using assertPojoMethodsForAll execution time grows exponentially. I am testing with 8 entities or dtos and test did not finish after 5 minutes. I had to kill process.

    Please see attached sample project. pojo-test.zip

    bug 
    opened by Jcamilorada 2
  • Non-compliant with Java spec:

    Non-compliant with Java spec: "The hashCode method should return different hash codes for non equal objects."

    The code given below is a valid POJO. Java POJOs are allowed to return same hashCode() for non-equal objects. Might not be optimal, but it's valid and actually fairly common situation - see https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()

    It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

    However for a simple pojo listed below pojo-tester (v 0.7.6) throws:

    Class (...)MyPojoTest.MyPojo has bad 'hashCode' method implementation.
    The hashCode method should return different hash codes for non equal objects.
    

    The test code:

    package com.my.pojo;
    import org.junit.jupiter.api.Test;
    import java.util.Objects;
    import static pl.pojo.tester.api.assertion.Assertions.assertPojoMethodsFor;
    
    // hashCode() and equals() generated with IntelliJ
    class MyPojoTest {
    
        public static class MyPojo {
            private String name;
            private int age;
    
            public String getName() {  return name;   }
            public void setName(String name) {  this.name = name; }
    
            public int getAge() {    return age;  }
            public void setAge(int age) { this.age = age;  }
    
            @Override
            public boolean equals(Object o) {
                if (this == o) {
                    return true;
                }
                if (o == null || getClass() != o.getClass()) {
                    return false;
                }
                MyPojo myPojo = (MyPojo) o;
                return age == myPojo.age &&
                        Objects.equals(name, myPojo.name);
            }
    
            @Override
            public int hashCode() {
                return Objects.hash(name);
            }
        }
    
        @Test
        public void testMyPojo() {
            assertPojoMethodsFor(MyPojo.class).areWellImplemented();
        }
    }
    
    
    opened by pafeu81 1
  • Bug in equals tester

    Bug in equals tester

    I wrote the following, wrong class; pojo tester claims it's well implemented.

    public class TestClass {
    
            @Nullable
            private Double testField;
    
    
            public TestClass(@Nullable Double testField) {
                this.testField = testField;
            }
    
            @Nullable
            public Double getTestField() {
                return testField;
            }
    
            public void setTestField(@Nullable Double testField) {
                this.testField = testField;
            }
    
            @Override
            public boolean equals(Object o) {
                if (this == o) {
                    return true;
                }
                if (o == null || getClass() != o.getClass()) {
                    return false;
                }
                TestClass that = (TestClass)o;
                if (!(testField == null && that.testField == null) || (testField != null && that.testField != null && Double.compare(testField, that.testField) != 0)) {
                    return false;
                }
                return true;
            }
    
            @Override
            public int hashCode() {
                return Objects.hash(testField);
            }
    
            @Override
            public String toString() {
                final StringBuilder sb = new StringBuilder("TestClass {");
                sb.append("testField=").append(testField);
                sb.append('}');
                return sb.toString();
            }
        }
    

    However, this simple test is enough to show the equals method is wrong:

            TestClass testClass = new TestClass(2d);
            TestClass testClass2 = new TestClass(2d);
            assertEquals(testClass, testClass2);
    
    opened by p91paul 0
  • Contribution required

    Contribution required

    Hi folks, unfortunatelly I dont have time to maintain this project. As you proably noticed it is outdated, lots of issues are not solved and, what is really bad, CI/CD tool is not working anymore.

    All this makes that releasing pojo-tester is not possible.

    Let me know if anyone would like to contribute and update projects.

    Thanks

    help wanted blocker 
    opened by sta-szek 3
  • DefaultPackageFilter should only consider .class files

    DefaultPackageFilter should only consider .class files

    Classpath may contain files with extensions which are not .class. For example my classpath contains .xml files (because MyBatis).

    Currently ReflectionUtils.removeClassSuffix is called, that removes the .class suffix; however it should filter to consider .class files only before doing that.

    Right now my.package.File.xml becomes my.package.Fi and that triggers an error when Class.forName is called on it.

    opened by p91paul 0
  • Unexpected NotEqualEqualsAssertionError

    Unexpected NotEqualEqualsAssertionError

    Version: 0.7.6

    I have a class (EntityUnderTest) which has only one property. If I initalize this object at either in the constructor of the EntityUnderTest or direct at declaration I'll get an NotEqualEqualsAssertionError error. If a remove the inilization the test passes.

    Here is the EntityUnderTest

    public class EntityUnderTest
    
        private ChildEntity faultInjectionParameters = new ChildEntity();
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            EntityUnderTest that = (EntityUnderTest) o;
            return Objects.equals(faultInjectionParameters, that.faultInjectionParameters);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(faultInjectionParameters);
        }
    

    And the child entity

    public class ChildEntity {
    
        private String string;
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            ChildEntity that = (ChildEntity) o;
            return Objects.equals(string, that.string);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(string);
        }
    
    }
    

    I also added a short reprocuder here: https://github.com/jacobhampel/pojoTestReproducer

    The error message says:

    The equals method should return false if objects should not be equal

    But the hashCode returns both the same value. So, I would expect that the test will pass.

    opened by jacobhampel 0
Releases(0.7.6)
  • 0.7.6(Nov 26, 2017)

  • 0.7.5(Mar 19, 2017)

  • 0.7.4(Mar 10, 2017)

  • 0.7.3(Jan 27, 2017)

  • 0.7.2(Jan 7, 2017)

  • 0.7.1(Dec 14, 2016)

  • 0.7.0(Nov 23, 2016)

  • 0.6.0(Oct 30, 2016)

  • 0.5.0(Oct 10, 2016)

    pl.pojo:pojo-tester:0.5.0

    First POJO-TESTER open source release.

    Features

    • POJO-TESTER can test constructors (#113)
    • POJO-TESTER will change String fields by default (#133)
    • Testing classes by package name or class package (#114)

    Bugfixes

    • POJO-TESTER fails on synthetic constructors (#126)
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Oct 1, 2016)

    pl.pojo:pojo-tester:0.4.0

    First POJO-TESTER open source release.

    Features

    • Javadocs
    • POJO-TESTER creates collections objects instead of mocking them (#112)
    • Choose constructor and pass parameters for creating new objects (#84)
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Sep 25, 2016)

    pl.pojo:pojo-tester:0.3.0

    Features

    • Parameters validation on API layer (#66)
    • Testing classes by name on API (#72)
    • Choose constructor and pass parameters for creating new objects (#84)

    Bugfixes

    • Wrong proxy implementation (#88)
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Sep 18, 2016)

    pl.pojo:pojo-tester:0.2.0

    Features

    • SetterGetterTester split into SetterTester and GetterTester (#87)
    • New, not empty value when initializing String objects (#86)

    Bugfixes

    • Setter not found, when field is boolean type and has is prefix (#89)
    • Wrong getter is found for fields with same endingd (#90)
    • Accessing not public classes, setters and getters in those classes (#75, #78)
    • Tests test same objects, which cause assertion exception (#85)
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Sep 13, 2016)

Owner
Piotr Joński
Piotr Joński
A modern testing and behavioural specification framework for Java 8

Introduction If you're a Java developer and you've seen the fluent, modern specification frameworks available in other programming languages such as s

Richard Warburton 250 Sep 12, 2022
A programmer-oriented testing framework for Java.

JUnit 4 JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks. For more infor

JUnit 8.4k Jan 4, 2023
The Enterprise-ready testing and specification framework.

Spock Framework Spock is a BDD-style developer testing and specification framework for Java and Groovy applications. To learn more about Spock, visit

Spock Framework 3.3k Jan 5, 2023
TestNG testing framework

Documentation available at TestNG's main web site. Release Notes 7.4.0 7.3.0 7.1.0 7.0.0 Need help? Before opening a new issue, did you ask your quest

Cedric Beust 1.8k Jan 5, 2023
Layout and functional testing framework for websites

Galen Framework master: Galen is an open-source tool for testing layout and responsive design of web applications. It is also a powerfull functional t

Galen Framework 1.4k Dec 10, 2022
Java DSL for easy testing of REST services

Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of usi

REST Assured 6.2k Dec 31, 2022
Java DSL for easy testing of REST services

Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of usi

REST Assured 6.2k Dec 25, 2022
Advanced Java library for integration testing, mocking, faking, and code coverage

Codebase for JMockit 1.x releases - Documentation - Release notes How to build the project: use JDK 1.8 or newer use Maven 3.6.0 or newer; the followi

The JMockit Testing Toolkit 439 Dec 9, 2022
ScalaTest is a free, open-source testing toolkit for Scala and Java programmers

ScalaTest is a free, open-source testing toolkit for Scala and Java programmers.

ScalaTest 1.1k Dec 26, 2022
Isolated MinIO container management for Java code testing

TestContainers for MinIO MinIO support for the test containers project. Installation Unfortunately, TestContainers for MinIO is not available in any p

Olsi Qose 3 Sep 30, 2022
Toolkit for testing multi-threaded and asynchronous applications

ConcurrentUnit A simple, zero-dependency toolkit for testing multi-threaded code. Supports Java 1.6+. Introduction ConcurrentUnit was created to help

Jonathan Halterman 406 Dec 30, 2022
Cucumber DSL for testing RESTful Web Services

cukes-rest takes simplicity of Cucumber and provides bindings for HTTP specification. As a sugar on top, cukes-rest adds steps for storing and using r

C.T.Co 100 Oct 18, 2022
Randomized Testing (Core JUnit Runner, ANT, Maven)

RANDOMIZED TESTING ================== JUnit test runner and plugins for running JUnit tests with pseudo-randomness. See the following for more infor

null 167 Dec 26, 2022
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

pact-jvm JVM implementation of the consumer driven contract library pact. From the Ruby Pact website: Define a pact between service consumers and prov

Pact Foundation 962 Dec 31, 2022
Captures log entries for unit testing purposes

LogCaptor Install with maven <dependency> <groupId>io.github.hakky54</groupId> <artifactId>logcaptor</artifactId> <version>2.4.0</version>

null 215 Jan 1, 2023
🎉Back end module of Sonic UI automation testing platform. Sonic-UI自动化测试平台后端模块。

?? Sonic UI automation testing platform. English | 简体中文 Background What is sonic ? Nowadays, automation testing, remote control and other technologies

Eason 1.7k Jan 1, 2023
JVM version of Pact Enables consumer driven contract testing

JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

Pact Foundation 961 Dec 30, 2022
State of the art mutation testing system for the JVM

Pitest (aka PIT) is a state of the art mutation testing system for Java and the JVM. Read all about it at http://pitest.org Releases 1.7.3 #952 Mutate

Henry Coles 1.5k Dec 26, 2022
🎉Ultimate test automation for testing any application on any platform

boyka-java Ultimate test automation for testing any application on any platform boyka-java Setup Write conventional commits 1.

Wasiq Bhamla 52 Dec 30, 2022