How to use report method of de.codecentric.hikaku.reporters.Reporter class

Best Hikaku code snippet using de.codecentric.hikaku.reporters.Reporter.report

HikakuTest.kt

Source:HikakuTest.kt Github

copy

Full Screen

2import de.codecentric.hikaku.SupportedFeatures.Feature3import de.codecentric.hikaku.converters.EndpointConverter4import de.codecentric.hikaku.endpoints.*5import de.codecentric.hikaku.endpoints.HttpMethod.*6import de.codecentric.hikaku.reporters.MatchResult7import de.codecentric.hikaku.reporters.NoOperationReporter8import de.codecentric.hikaku.reporters.Reporter9import org.assertj.core.api.Assertions.assertThat10import org.junit.jupiter.api.Nested11import org.junit.jupiter.api.Test12import org.opentest4j.AssertionFailedError13import kotlin.test.assertFailsWith14class HikakuTest {15    @Nested16    inner class EndpointBasicsTests {17        @Test18        fun `specification and implementation having different amounts of endpoints in conversion results let the test fail`() {19            //given20            val specificationDummyConverter = object : EndpointConverter {21                override val conversionResult: Set<Endpoint> = setOf(22                        Endpoint("/todos", GET)23                )24                override val supportedFeatures = SupportedFeatures()25            }26            val implementationDummyConverter = object : EndpointConverter {27                override val conversionResult: Set<Endpoint> = setOf(28                        Endpoint("/todos", GET),29                        Endpoint("/todos", HEAD)30                )31                override val supportedFeatures = SupportedFeatures()32            }33            val hikaku = Hikaku(34                    specificationDummyConverter,35                    implementationDummyConverter,36                    HikakuConfig(37                            reporters = listOf(NoOperationReporter())38                    )39            )40            //when41            assertFailsWith<AssertionError> {42                hikaku.match()43            }44        }45        @Test46        fun `paths in random order match`() {47            //given48            val specificationDummyConverter = object : EndpointConverter {49                override val conversionResult: Set<Endpoint> = setOf(50                        Endpoint("/c", GET),51                        Endpoint("/a", GET),52                        Endpoint("/b", GET)53                )54                override val supportedFeatures = SupportedFeatures()55            }56            val implementationDummyConverter = object : EndpointConverter {57                override val conversionResult: Set<Endpoint> = setOf(58                        Endpoint("/b", GET),59                        Endpoint("/c", GET),60                        Endpoint("/a", GET)61                )62                override val supportedFeatures = SupportedFeatures(Feature.PathParameters)63            }64            val hikaku = Hikaku(65                    specificationDummyConverter,66                    implementationDummyConverter,67                    HikakuConfig(68                            reporters = listOf(NoOperationReporter())69                    )70            )71            //when72            hikaku.match()73        }74        @Test75        fun `same number of Endpoints, but paths don't match`() {76            //given77            val specificationDummyConverter = object : EndpointConverter {78                override val conversionResult: Set<Endpoint> = setOf(79                        Endpoint("/c", GET),80                        Endpoint("/a", GET),81                        Endpoint("/b", GET)82                )83                override val supportedFeatures = SupportedFeatures()84            }85            val implementationDummyConverter = object : EndpointConverter {86                override val conversionResult: Set<Endpoint> = setOf(87                        Endpoint("/y", GET),88                        Endpoint("/z", GET),89                        Endpoint("/a", GET)90                )91                override val supportedFeatures = SupportedFeatures()92            }93            val hikaku = Hikaku(94                    specificationDummyConverter,95                    implementationDummyConverter,96                    HikakuConfig(97                            reporters = listOf(NoOperationReporter())98                    )99            )100            //when101            assertFailsWith<AssertionFailedError> {102                hikaku.match()103            }104        }105        @Test106        fun `http methods in random order match`() {107            //given108            val specificationDummyConverter = object : EndpointConverter {109                override val conversionResult: Set<Endpoint> = setOf(110                        Endpoint("/todos", POST),111                        Endpoint("/todos", DELETE),112                        Endpoint("/todos", GET)113                )114                override val supportedFeatures = SupportedFeatures()115            }116            val implementationDummyConverter = object : EndpointConverter {117                override val conversionResult: Set<Endpoint> = setOf(118                        Endpoint("/todos", GET),119                        Endpoint("/todos", POST),120                        Endpoint("/todos", DELETE)121                )122                override val supportedFeatures = SupportedFeatures(Feature.PathParameters)123            }124            val hikaku = Hikaku(125                    specificationDummyConverter,126                    implementationDummyConverter,127                    HikakuConfig(128                            reporters = listOf(NoOperationReporter())129                    )130            )131            //when132            hikaku.match()133        }134        @Test135        fun `same number of Endpoints, but http methods don't match`() {136            //given137            val specificationDummyConverter = object : EndpointConverter {138                override val conversionResult: Set<Endpoint> = setOf(139                        Endpoint("/todos", PUT),140                        Endpoint("/todos", DELETE),141                        Endpoint("/todos", GET)142                )143                override val supportedFeatures = SupportedFeatures()144            }145            val implementationDummyConverter = object : EndpointConverter {146                override val conversionResult: Set<Endpoint> = setOf(147                        Endpoint("/todos", GET),148                        Endpoint("/todos", POST),149                        Endpoint("/todos", HEAD)150                )151                override val supportedFeatures = SupportedFeatures()152            }153            val hikaku = Hikaku(154                    specificationDummyConverter,155                    implementationDummyConverter,156                    HikakuConfig(157                            reporters = listOf(NoOperationReporter())158                    )159            )160            //when161            assertFailsWith<AssertionFailedError> {162                hikaku.match()163            }164        }165    }166    @Nested167    inner class FeatureTests {168        @Nested169        inner class PathParameterTests {170            @Test171            fun `path parameter in random order match if the feature is supported by both converters`() {172                //given173                val specificationDummyConverter = object : EndpointConverter {174                    override val conversionResult: Set<Endpoint> = setOf(175                            Endpoint(176                                    path = "/todos/{organizationId}/{accountId}",177                                    httpMethod = GET,178                                    pathParameters = setOf(179                                            PathParameter("accountId"),180                                            PathParameter("organizationId")181                                    )182                            )183                    )184                    override val supportedFeatures = SupportedFeatures(Feature.PathParameters)185                }186                val implementationDummyConverter = object : EndpointConverter {187                    override val conversionResult: Set<Endpoint> = setOf(188                            Endpoint(189                                    path = "/todos/{organizationId}/{accountId}",190                                    httpMethod = GET,191                                    pathParameters = setOf(192                                            PathParameter("organizationId"),193                                            PathParameter("accountId")194                                    )195                            )196                    )197                    override val supportedFeatures = SupportedFeatures(Feature.PathParameters)198                }199                val hikaku = Hikaku(200                        specificationDummyConverter,201                        implementationDummyConverter,202                        HikakuConfig(203                                reporters = listOf(NoOperationReporter())204                        )205                )206                //when207                hikaku.match()208            }209            @Test210            fun `path parameter are skipped if the feature is not supported by one of the converters`() {211                //given212                val specificationDummyConverter = object : EndpointConverter {213                    override val conversionResult: Set<Endpoint> = setOf(214                            Endpoint(215                                    path = "/todos/{id}",216                                    httpMethod = GET,217                                    pathParameters = setOf(218                                            PathParameter("id")219                                    )220                            )221                    )222                    override val supportedFeatures = SupportedFeatures()223                }224                val implementationDummyConverter = object : EndpointConverter {225                    override val conversionResult: Set<Endpoint> = setOf(226                            Endpoint(227                                    path = "/todos/{id}",228                                    httpMethod = GET,229                                    pathParameters = setOf(230                                            PathParameter("othername")231                                    )232                            )233                    )234                    override val supportedFeatures = SupportedFeatures(Feature.PathParameters)235                }236                val hikaku = Hikaku(237                        specificationDummyConverter,238                        implementationDummyConverter,239                        HikakuConfig(240                                reporters = listOf(NoOperationReporter())241                        )242                )243                //when244                hikaku.match()245            }246            @Test247            fun `path parameter don't match`() {248                //given249                val specificationDummyConverter = object : EndpointConverter {250                    override val conversionResult: Set<Endpoint> = setOf(251                            Endpoint(252                                    path = "/todos/{accountId}",253                                    httpMethod = GET,254                                    pathParameters = setOf(255                                            PathParameter("accountId")256                                    )257                            )258                    )259                    override val supportedFeatures = SupportedFeatures(Feature.PathParameters)260                }261                val implementationDummyConverter = object : EndpointConverter {262                    override val conversionResult: Set<Endpoint> = setOf(263                            Endpoint(264                                    path = "/todos/{id}",265                                    httpMethod = GET,266                                    pathParameters = setOf(267                                            PathParameter("id")268                                    )269                            )270                    )271                    override val supportedFeatures = SupportedFeatures(Feature.PathParameters)272                }273                val hikaku = Hikaku(274                        specificationDummyConverter,275                        implementationDummyConverter,276                        HikakuConfig(277                                reporters = listOf(NoOperationReporter())278                        )279                )280                //when281                assertFailsWith<AssertionFailedError> {282                    hikaku.match()283                }284            }285        }286        @Nested287        inner class QueryParameterNameTests {288            @Test289            fun `query parameter names in random order match if the feature is supported by both converters`() {290                //given291                val specificationDummyConverter = object : EndpointConverter {292                    override val conversionResult: Set<Endpoint> = setOf(293                            Endpoint(294                                    path = "/todos",295                                    httpMethod = GET,296                                    queryParameters = setOf(297                                            QueryParameter("filter"),298                                            QueryParameter("tag"),299                                            QueryParameter("query")300                                    )301                            )302                    )303                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)304                }305                val implementationDummyConverter = object : EndpointConverter {306                    override val conversionResult: Set<Endpoint> = setOf(307                            Endpoint(308                                    path = "/todos",309                                    httpMethod = GET,310                                    queryParameters = setOf(311                                            QueryParameter("query"),312                                            QueryParameter("filter"),313                                            QueryParameter("tag")314                                    )315                            )316                    )317                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)318                }319                val hikaku = Hikaku(320                        specificationDummyConverter,321                        implementationDummyConverter,322                        HikakuConfig(323                                reporters = listOf(NoOperationReporter())324                        )325                )326                //when327                hikaku.match()328            }329            @Test330            fun `query parameter names are skipped if the feature is not supported by one of the converters`() {331                //given332                val specificationDummyConverter = object : EndpointConverter {333                    override val conversionResult: Set<Endpoint> = setOf(334                            Endpoint(335                                    path = "/todos",336                                    httpMethod = GET,337                                    queryParameters = setOf(338                                            QueryParameter("filter")339                                    )340                            )341                    )342                    override val supportedFeatures = SupportedFeatures()343                }344                val implementationDummyConverter = object : EndpointConverter {345                    override val conversionResult: Set<Endpoint> = setOf(346                            Endpoint(347                                    path = "/todos",348                                    httpMethod = GET,349                                    queryParameters = setOf(350                                            QueryParameter("tag")351                                    )352                            )353                    )354                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)355                }356                val hikaku = Hikaku(357                        specificationDummyConverter,358                        implementationDummyConverter,359                        HikakuConfig(360                                reporters = listOf(NoOperationReporter())361                        )362                )363                //when364                hikaku.match()365            }366            @Test367            fun `query parameter names don't match`() {368                //given369                val specificationDummyConverter = object : EndpointConverter {370                    override val conversionResult: Set<Endpoint> = setOf(371                            Endpoint(372                                    path = "/todos",373                                    httpMethod = GET,374                                    queryParameters = setOf(375                                            QueryParameter("filter")376                                    )377                            )378                    )379                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)380                }381                val implementationDummyConverter = object : EndpointConverter {382                    override val conversionResult: Set<Endpoint> = setOf(383                            Endpoint(384                                    path = "/todos",385                                    httpMethod = GET,386                                    queryParameters = setOf(387                                            QueryParameter("tag")388                                    )389                            )390                    )391                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)392                }393                val hikaku = Hikaku(394                        specificationDummyConverter,395                        implementationDummyConverter,396                        HikakuConfig(397                                reporters = listOf(NoOperationReporter())398                        )399                )400                //when401                assertFailsWith<AssertionFailedError> {402                    hikaku.match()403                }404            }405            @Test406            fun `query parameter required matches if the feature is supported by both converters`() {407                //given408                val specificationDummyConverter = object : EndpointConverter {409                    override val conversionResult: Set<Endpoint> = setOf(410                            Endpoint(411                                    path = "/todos",412                                    httpMethod = GET,413                                    queryParameters = setOf(414                                            QueryParameter("filter", true)415                                    )416                            )417                    )418                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)419                }420                val implementationDummyConverter = object : EndpointConverter {421                    override val conversionResult: Set<Endpoint> = setOf(422                            Endpoint(423                                    path = "/todos",424                                    httpMethod = GET,425                                    queryParameters = setOf(426                                            QueryParameter("filter", true)427                                    )428                            )429                    )430                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)431                }432                val hikaku = Hikaku(433                        specificationDummyConverter,434                        implementationDummyConverter,435                        HikakuConfig(436                                reporters = listOf(NoOperationReporter())437                        )438                )439                //when440                hikaku.match()441            }442            @Test443            fun `query parameter required is skipped if option is not supported by one of the converters`() {444                //given445                val specificationDummyConverter = object : EndpointConverter {446                    override val conversionResult: Set<Endpoint> = setOf(447                            Endpoint(448                                    path = "/todos",449                                    httpMethod = GET,450                                    queryParameters = setOf(451                                            QueryParameter("filter", true)452                                    )453                            )454                    )455                    override val supportedFeatures = SupportedFeatures()456                }457                val implementationDummyConverter = object : EndpointConverter {458                    override val conversionResult: Set<Endpoint> = setOf(459                            Endpoint(460                                    path = "/todos",461                                    httpMethod = GET,462                                    queryParameters = setOf(463                                            QueryParameter("filter", false)464                                    )465                            )466                    )467                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)468                }469                val hikaku = Hikaku(470                        specificationDummyConverter,471                        implementationDummyConverter,472                        HikakuConfig(473                                reporters = listOf(NoOperationReporter())474                        )475                )476                //when477                hikaku.match()478            }479            @Test480            fun `query parameter required don't match`() {481                //given482                val specificationDummyConverter = object : EndpointConverter {483                    override val conversionResult: Set<Endpoint> = setOf(484                            Endpoint(485                                    path = "/todos",486                                    httpMethod = GET,487                                    queryParameters = setOf(488                                            QueryParameter("filter", true)489                                    )490                            )491                    )492                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)493                }494                val implementationDummyConverter = object : EndpointConverter {495                    override val conversionResult: Set<Endpoint> = setOf(496                            Endpoint(497                                    path = "/todos",498                                    httpMethod = GET,499                                    queryParameters = setOf(500                                            QueryParameter("filter", false)501                                    )502                            )503                    )504                    override val supportedFeatures = SupportedFeatures(Feature.QueryParameters)505                }506                val hikaku = Hikaku(507                        specificationDummyConverter,508                        implementationDummyConverter,509                        HikakuConfig(510                                reporters = listOf(NoOperationReporter())511                        )512                )513                //when514                assertFailsWith<AssertionFailedError> {515                    hikaku.match()516                }517            }518        }519        @Nested520        inner class HeaderParameterNameTests {521            @Test522            fun `header parameter names in random order match if the feature is supported by both converters`() {523                //given524                val specificationDummyConverter = object : EndpointConverter {525                    override val conversionResult: Set<Endpoint> = setOf(526                            Endpoint(527                                    path = "/todos",528                                    httpMethod = GET,529                                    headerParameters = setOf(530                                            HeaderParameter("x-b3-traceid"),531                                            HeaderParameter("allow-cache")532                                    )533                            )534                    )535                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)536                }537                val implementationDummyConverter = object : EndpointConverter {538                    override val conversionResult: Set<Endpoint> = setOf(539                            Endpoint(540                                    path = "/todos",541                                    httpMethod = GET,542                                    headerParameters = setOf(543                                            HeaderParameter("allow-cache"),544                                            HeaderParameter("x-b3-traceid")545                                    )546                            )547                    )548                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)549                }550                val hikaku = Hikaku(551                        specificationDummyConverter,552                        implementationDummyConverter,553                        HikakuConfig(554                                reporters = listOf(NoOperationReporter())555                        )556                )557                //when558                hikaku.match()559            }560            @Test561            fun `header parameter names are skipped if the feature is not supported by one of the converters`() {562                //given563                val specificationDummyConverter = object : EndpointConverter {564                    override val conversionResult: Set<Endpoint> = setOf(565                            Endpoint(566                                    path = "/todos",567                                    httpMethod = GET,568                                    headerParameters = setOf(569                                            HeaderParameter("allow-cache")570                                    )571                            )572                    )573                    override val supportedFeatures = SupportedFeatures()574                }575                val implementationDummyConverter = object : EndpointConverter {576                    override val conversionResult: Set<Endpoint> = setOf(577                            Endpoint(578                                    path = "/todos",579                                    httpMethod = GET,580                                    headerParameters = setOf(581                                            HeaderParameter("x-b3-traceid")582                                    )583                            )584                    )585                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)586                }587                val hikaku = Hikaku(588                        specificationDummyConverter,589                        implementationDummyConverter,590                        HikakuConfig(591                                reporters = listOf(NoOperationReporter())592                        )593                )594                //when595                hikaku.match()596            }597            @Test598            fun `header parameter names don't match`() {599                //given600                val specificationDummyConverter = object : EndpointConverter {601                    override val conversionResult: Set<Endpoint> = setOf(602                            Endpoint(603                                    path = "/todos",604                                    httpMethod = GET,605                                    headerParameters = setOf(606                                            HeaderParameter("cache")607                                    )608                            )609                    )610                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)611                }612                val implementationDummyConverter = object : EndpointConverter {613                    override val conversionResult: Set<Endpoint> = setOf(614                            Endpoint(615                                    path = "/todos",616                                    httpMethod = GET,617                                    headerParameters = setOf(618                                            HeaderParameter("allow-cache")619                                    )620                            )621                    )622                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)623                }624                val hikaku = Hikaku(625                        specificationDummyConverter,626                        implementationDummyConverter,627                        HikakuConfig(628                                reporters = listOf(NoOperationReporter())629                        )630                )631                //when632                assertFailsWith<AssertionFailedError> {633                    hikaku.match()634                }635            }636            @Test637            fun `header parameter required matches if the feature is supported by both converters`() {638                //given639                val specificationDummyConverter = object : EndpointConverter {640                    override val conversionResult: Set<Endpoint> = setOf(641                            Endpoint(642                                    path = "/todos",643                                    httpMethod = GET,644                                    headerParameters = setOf(645                                            HeaderParameter("allow-cache", true)646                                    )647                            )648                    )649                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)650                }651                val implementationDummyConverter = object : EndpointConverter {652                    override val conversionResult: Set<Endpoint> = setOf(653                            Endpoint(654                                    path = "/todos",655                                    httpMethod = GET,656                                    headerParameters = setOf(657                                            HeaderParameter("allow-cache", true)658                                    )659                            )660                    )661                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)662                }663                val hikaku = Hikaku(664                        specificationDummyConverter,665                        implementationDummyConverter,666                        HikakuConfig(667                                reporters = listOf(NoOperationReporter())668                        )669                )670                //when671                hikaku.match()672            }673            @Test674            fun `header parameter required is skipped if option is not supported by one of the converters`() {675                //given676                val specificationDummyConverter = object : EndpointConverter {677                    override val conversionResult: Set<Endpoint> = setOf(678                            Endpoint(679                                    path = "/todos",680                                    httpMethod = GET,681                                    headerParameters = setOf(682                                            HeaderParameter("allow-cache", false)683                                    )684                            )685                    )686                    override val supportedFeatures = SupportedFeatures()687                }688                val implementationDummyConverter = object : EndpointConverter {689                    override val conversionResult: Set<Endpoint> = setOf(690                            Endpoint(691                                    path = "/todos",692                                    httpMethod = GET,693                                    headerParameters = setOf(694                                            HeaderParameter("allow-cache", true)695                                    )696                            )697                    )698                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)699                }700                val hikaku = Hikaku(701                        specificationDummyConverter,702                        implementationDummyConverter,703                        HikakuConfig(704                                reporters = listOf(NoOperationReporter())705                        )706                )707                //when708                hikaku.match()709            }710            @Test711            fun `header parameter required don't match`() {712                //given713                val specificationDummyConverter = object : EndpointConverter {714                    override val conversionResult: Set<Endpoint> = setOf(715                            Endpoint(716                                    path = "/todos",717                                    httpMethod = GET,718                                    headerParameters = setOf(719                                            HeaderParameter("allow-cache", true)720                                    )721                            )722                    )723                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)724                }725                val implementationDummyConverter = object : EndpointConverter {726                    override val conversionResult: Set<Endpoint> = setOf(727                            Endpoint(728                                    path = "/todos",729                                    httpMethod = GET,730                                    headerParameters = setOf(731                                            HeaderParameter("allow-cache", false)732                                    )733                            )734                    )735                    override val supportedFeatures = SupportedFeatures(Feature.HeaderParameters)736                }737                val hikaku = Hikaku(738                        specificationDummyConverter,739                        implementationDummyConverter,740                        HikakuConfig(741                                reporters = listOf(NoOperationReporter())742                        )743                )744                //when745                assertFailsWith<AssertionFailedError> {746                    hikaku.match()747                }748            }749        }750        @Nested751        inner class MatrixParameterNameTests {752            @Test753            fun `matrix parameter names in random order match if the feature is supported by both converters`() {754                //given755                val specificationDummyConverter = object : EndpointConverter {756                    override val conversionResult: Set<Endpoint> = setOf(757                            Endpoint(758                                    path = "/todos",759                                    httpMethod = GET,760                                    matrixParameters = setOf(761                                            MatrixParameter("tag"),762                                            MatrixParameter("done")763                                    )764                            )765                    )766                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)767                }768                val implementationDummyConverter = object : EndpointConverter {769                    override val conversionResult: Set<Endpoint> = setOf(770                            Endpoint(771                                    path = "/todos",772                                    httpMethod = GET,773                                    matrixParameters = setOf(774                                            MatrixParameter("done"),775                                            MatrixParameter("tag")776                                    )777                            )778                    )779                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)780                }781                val hikaku = Hikaku(782                        specificationDummyConverter,783                        implementationDummyConverter,784                        HikakuConfig(785                                reporters = listOf(NoOperationReporter())786                        )787                )788                //when789                hikaku.match()790            }791            @Test792            fun `matrix parameter names are skipped if the feature is not supported by one of the converters`() {793                //given794                val specificationDummyConverter = object : EndpointConverter {795                    override val conversionResult: Set<Endpoint> = setOf(796                            Endpoint(797                                    path = "/todos",798                                    httpMethod = GET,799                                    matrixParameters = setOf(800                                            MatrixParameter("done")801                                    )802                            )803                    )804                    override val supportedFeatures = SupportedFeatures()805                }806                val implementationDummyConverter = object : EndpointConverter {807                    override val conversionResult: Set<Endpoint> = setOf(808                            Endpoint(809                                    path = "/todos",810                                    httpMethod = GET,811                                    matrixParameters = setOf(812                                            MatrixParameter("tag")813                                    )814                            )815                    )816                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)817                }818                val hikaku = Hikaku(819                        specificationDummyConverter,820                        implementationDummyConverter,821                        HikakuConfig(822                                reporters = listOf(NoOperationReporter())823                        )824                )825                //when826                hikaku.match()827            }828            @Test829            fun `matrix parameter names don't match`() {830                //given831                val specificationDummyConverter = object : EndpointConverter {832                    override val conversionResult: Set<Endpoint> = setOf(833                            Endpoint(834                                    path = "/todos",835                                    httpMethod = GET,836                                    matrixParameters = setOf(837                                            MatrixParameter("tag")838                                    )839                            )840                    )841                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)842                }843                val implementationDummyConverter = object : EndpointConverter {844                    override val conversionResult: Set<Endpoint> = setOf(845                            Endpoint(846                                    path = "/todos",847                                    httpMethod = GET,848                                    matrixParameters = setOf(849                                            MatrixParameter("done")850                                    )851                            )852                    )853                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)854                }855                val hikaku = Hikaku(856                        specificationDummyConverter,857                        implementationDummyConverter,858                        HikakuConfig(859                                reporters = listOf(NoOperationReporter())860                        )861                )862                //when863                assertFailsWith<AssertionFailedError> {864                    hikaku.match()865                }866            }867            @Test868            fun `matrix parameter required matches if the feature is supported by both converters`() {869                //given870                val specificationDummyConverter = object : EndpointConverter {871                    override val conversionResult: Set<Endpoint> = setOf(872                            Endpoint(873                                    path = "/todos",874                                    httpMethod = GET,875                                    matrixParameters = setOf(876                                            MatrixParameter("tag", true)877                                    )878                            )879                    )880                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)881                }882                val implementationDummyConverter = object : EndpointConverter {883                    override val conversionResult: Set<Endpoint> = setOf(884                            Endpoint(885                                    path = "/todos",886                                    httpMethod = GET,887                                    matrixParameters = setOf(888                                            MatrixParameter("tag", true)889                                    )890                            )891                    )892                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)893                }894                val hikaku = Hikaku(895                        specificationDummyConverter,896                        implementationDummyConverter,897                        HikakuConfig(898                                reporters = listOf(NoOperationReporter())899                        )900                )901                //when902                hikaku.match()903            }904            @Test905            fun `matrix parameter required is skipped if option is not supported by one of the converters`() {906                //given907                val specificationDummyConverter = object : EndpointConverter {908                    override val conversionResult: Set<Endpoint> = setOf(909                            Endpoint(910                                    path = "/todos",911                                    httpMethod = GET,912                                    matrixParameters = setOf(913                                            MatrixParameter("tag", true)914                                    )915                            )916                    )917                    override val supportedFeatures = SupportedFeatures()918                }919                val implementationDummyConverter = object : EndpointConverter {920                    override val conversionResult: Set<Endpoint> = setOf(921                            Endpoint(922                                    path = "/todos",923                                    httpMethod = GET,924                                    headerParameters = setOf(925                                            HeaderParameter("tag", false)926                                    )927                            )928                    )929                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)930                }931                val hikaku = Hikaku(932                        specificationDummyConverter,933                        implementationDummyConverter,934                        HikakuConfig(935                                reporters = listOf(NoOperationReporter())936                        )937                )938                //when939                hikaku.match()940            }941            @Test942            fun `matrix parameter required don't match`() {943                //given944                val specificationDummyConverter = object : EndpointConverter {945                    override val conversionResult: Set<Endpoint> = setOf(946                            Endpoint(947                                    path = "/todos",948                                    httpMethod = GET,949                                    matrixParameters = setOf(950                                            MatrixParameter("allow-cache", true)951                                    )952                            )953                    )954                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)955                }956                val implementationDummyConverter = object : EndpointConverter {957                    override val conversionResult: Set<Endpoint> = setOf(958                            Endpoint(959                                    path = "/todos",960                                    httpMethod = GET,961                                    matrixParameters = setOf(962                                            MatrixParameter("allow-cache", false)963                                    )964                            )965                    )966                    override val supportedFeatures = SupportedFeatures(Feature.MatrixParameters)967                }968                val hikaku = Hikaku(969                        specificationDummyConverter,970                        implementationDummyConverter,971                        HikakuConfig(972                                reporters = listOf(NoOperationReporter())973                        )974                )975                //when976                assertFailsWith<AssertionFailedError> {977                    hikaku.match()978                }979            }980        }981        @Nested982        inner class ProducesTests {983            @Test984            fun `media types in random order match if the feature is supported by both converters`() {985                //given986                val specificationDummyConverter = object : EndpointConverter {987                    override val conversionResult: Set<Endpoint> = setOf(988                            Endpoint(989                                    path = "/todos",990                                    httpMethod = GET,991                                    produces = setOf(992                                            "application/json",993                                            "text/plain"994                                    )995                            )996                    )997                    override val supportedFeatures = SupportedFeatures(Feature.Produces)998                }999                val implementationDummyConverter = object : EndpointConverter {1000                    override val conversionResult: Set<Endpoint> = setOf(1001                            Endpoint(1002                                    path = "/todos",1003                                    httpMethod = GET,1004                                    produces = setOf(1005                                            "text/plain",1006                                            "application/json"1007                                    )1008                            )1009                    )1010                    override val supportedFeatures = SupportedFeatures(Feature.Produces)1011                }1012                val hikaku = Hikaku(1013                        specificationDummyConverter,1014                        implementationDummyConverter,1015                        HikakuConfig(1016                                reporters = listOf(NoOperationReporter())1017                        )1018                )1019                //when1020                hikaku.match()1021            }1022            @Test1023            fun `produces is skipped if the feature is not supported by one of the converters`() {1024                //given1025                val specificationDummyConverter = object : EndpointConverter {1026                    override val conversionResult: Set<Endpoint> = setOf(1027                            Endpoint(1028                                    path = "/todos",1029                                    httpMethod = GET,1030                                    produces = setOf(1031                                            "application/xml",1032                                            "text/plain"1033                                    )1034                            )1035                    )1036                    override val supportedFeatures = SupportedFeatures()1037                }1038                val implementationDummyConverter = object : EndpointConverter {1039                    override val conversionResult: Set<Endpoint> = setOf(1040                            Endpoint(1041                                    path = "/todos",1042                                    httpMethod = GET,1043                                    produces = setOf(1044                                            "application/json"1045                                    )1046                            )1047                    )1048                    override val supportedFeatures = SupportedFeatures(Feature.Produces)1049                }1050                val hikaku = Hikaku(1051                        specificationDummyConverter,1052                        implementationDummyConverter,1053                        HikakuConfig(1054                                reporters = listOf(NoOperationReporter())1055                        )1056                )1057                //when1058                hikaku.match()1059            }1060            @Test1061            fun `media types don't match`() {1062                //given1063                val specificationDummyConverter = object : EndpointConverter {1064                    override val conversionResult: Set<Endpoint> = setOf(1065                            Endpoint(1066                                    path = "/todos",1067                                    httpMethod = GET,1068                                    produces = setOf(1069                                            "application/xml",1070                                            "text/plain"1071                                    )1072                            )1073                    )1074                    override val supportedFeatures = SupportedFeatures(Feature.Produces)1075                }1076                val implementationDummyConverter = object : EndpointConverter {1077                    override val conversionResult: Set<Endpoint> = setOf(1078                            Endpoint(1079                                    path = "/todos",1080                                    httpMethod = GET,1081                                    produces = setOf(1082                                            "application/json"1083                                    )1084                            )1085                    )1086                    override val supportedFeatures = SupportedFeatures(Feature.Produces)1087                }1088                val hikaku = Hikaku(1089                        specificationDummyConverter,1090                        implementationDummyConverter,1091                        HikakuConfig(1092                                reporters = listOf(NoOperationReporter())1093                        )1094                )1095                //when1096                assertFailsWith<AssertionFailedError> {1097                    hikaku.match()1098                }1099            }1100        }1101        @Nested1102        inner class ConsumesTests {1103            @Test1104            fun `media types in random order match if the feature is supported by both converters`() {1105                //given1106                val specificationDummyConverter = object : EndpointConverter {1107                    override val conversionResult: Set<Endpoint> = setOf(1108                            Endpoint(1109                                    path = "/todos",1110                                    httpMethod = GET,1111                                    consumes = setOf(1112                                            "application/json",1113                                            "text/plain"1114                                    )1115                            )1116                    )1117                    override val supportedFeatures = SupportedFeatures(Feature.Consumes)1118                }1119                val implementationDummyConverter = object : EndpointConverter {1120                    override val conversionResult: Set<Endpoint> = setOf(1121                            Endpoint(1122                                    path = "/todos",1123                                    httpMethod = GET,1124                                    consumes = setOf(1125                                            "text/plain",1126                                            "application/json"1127                                    )1128                            )1129                    )1130                    override val supportedFeatures = SupportedFeatures(Feature.Consumes)1131                }1132                val hikaku = Hikaku(1133                        specificationDummyConverter,1134                        implementationDummyConverter,1135                        HikakuConfig(1136                                reporters = listOf(NoOperationReporter())1137                        )1138                )1139                //when1140                hikaku.match()1141            }1142            @Test1143            fun `produces is skipped if the feature is not supported by one of the converters`() {1144                //given1145                val specificationDummyConverter = object : EndpointConverter {1146                    override val conversionResult: Set<Endpoint> = setOf(1147                            Endpoint(1148                                    path = "/todos",1149                                    httpMethod = GET,1150                                    consumes = setOf(1151                                            "application/xml",1152                                            "text/plain"1153                                    )1154                            )1155                    )1156                    override val supportedFeatures = SupportedFeatures()1157                }1158                val implementationDummyConverter = object : EndpointConverter {1159                    override val conversionResult: Set<Endpoint> = setOf(1160                            Endpoint(1161                                    path = "/todos",1162                                    httpMethod = GET,1163                                    consumes = setOf(1164                                            "application/json"1165                                    )1166                            )1167                    )1168                    override val supportedFeatures = SupportedFeatures(Feature.Consumes)1169                }1170                val hikaku = Hikaku(1171                        specificationDummyConverter,1172                        implementationDummyConverter,1173                        HikakuConfig(1174                                reporters = listOf(NoOperationReporter())1175                        )1176                )1177                //when1178                hikaku.match()1179            }1180            @Test1181            fun `media types don't match`() {1182                //given1183                val specificationDummyConverter = object : EndpointConverter {1184                    override val conversionResult: Set<Endpoint> = setOf(1185                            Endpoint(1186                                    path = "/todos",1187                                    httpMethod = GET,1188                                    consumes = setOf(1189                                            "application/xml",1190                                            "text/plain"1191                                    )1192                            )1193                    )1194                    override val supportedFeatures = SupportedFeatures(Feature.Consumes)1195                }1196                val implementationDummyConverter = object : EndpointConverter {1197                    override val conversionResult: Set<Endpoint> = setOf(1198                            Endpoint(1199                                    path = "/todos",1200                                    httpMethod = GET,1201                                    consumes = setOf(1202                                            "application/json"1203                                    )1204                            )1205                    )1206                    override val supportedFeatures = SupportedFeatures(Feature.Consumes)1207                }1208                val hikaku = Hikaku(1209                        specificationDummyConverter,1210                        implementationDummyConverter,1211                        HikakuConfig(1212                                reporters = listOf(NoOperationReporter())1213                        )1214                )1215                //when1216                assertFailsWith<AssertionFailedError> {1217                    hikaku.match()1218                }1219            }1220        }1221        @Nested1222        inner class DeprecationTests {1223            @Test1224            fun `deprecation info in random order match if the feature is supported by both converters`() {1225                //given1226                val specificationDummyConverter = object : EndpointConverter {1227                    override val conversionResult: Set<Endpoint> = setOf(1228                            Endpoint(1229                                    path = "/todos",1230                                    httpMethod = GET,1231                                    deprecated = false1232                            ),1233                            Endpoint(1234                                    path = "/todos/tags",1235                                    httpMethod = GET,1236                                    deprecated = true1237                            )1238                    )1239                    override val supportedFeatures = SupportedFeatures(Feature.Deprecation)1240                }1241                val implementationDummyConverter = object : EndpointConverter {1242                    override val conversionResult: Set<Endpoint> = setOf(1243                            Endpoint(1244                                    path = "/todos/tags",1245                                    httpMethod = GET,1246                                    deprecated = true1247                            ),1248                            Endpoint(1249                                    path = "/todos",1250                                    httpMethod = GET,1251                                    deprecated = false1252                            )1253                    )1254                    override val supportedFeatures = SupportedFeatures(Feature.Deprecation)1255                }1256                val hikaku = Hikaku(1257                        specificationDummyConverter,1258                        implementationDummyConverter,1259                        HikakuConfig(1260                                reporters = listOf(NoOperationReporter())1261                        )1262                )1263                //when1264                hikaku.match()1265            }1266            @Test1267            fun `deprecation info is skipped if the feature is not supported by one of the converters`() {1268                //given1269                val specificationDummyConverter = object : EndpointConverter {1270                    override val conversionResult: Set<Endpoint> = setOf(1271                            Endpoint(1272                                    path = "/todos",1273                                    httpMethod = GET,1274                                    deprecated = false1275                            )1276                    )1277                    override val supportedFeatures = SupportedFeatures()1278                }1279                val implementationDummyConverter = object : EndpointConverter {1280                    override val conversionResult: Set<Endpoint> = setOf(1281                            Endpoint(1282                                    path = "/todos",1283                                    httpMethod = GET,1284                                    deprecated = true1285                            )1286                    )1287                    override val supportedFeatures = SupportedFeatures(Feature.Deprecation)1288                }1289                val hikaku = Hikaku(1290                        specificationDummyConverter,1291                        implementationDummyConverter,1292                        HikakuConfig(1293                                reporters = listOf(NoOperationReporter())1294                        )1295                )1296                //when1297                hikaku.match()1298            }1299            @Test1300            fun `deprecation info does not match`() {1301                //given1302                val specificationDummyConverter = object : EndpointConverter {1303                    override val conversionResult: Set<Endpoint> = setOf(1304                            Endpoint(1305                                    path = "/todos",1306                                    httpMethod = GET,1307                                    deprecated = false1308                            )1309                    )1310                    override val supportedFeatures = SupportedFeatures(Feature.Deprecation)1311                }1312                val implementationDummyConverter = object : EndpointConverter {1313                    override val conversionResult: Set<Endpoint> = setOf(1314                            Endpoint(1315                                    path = "/todos",1316                                    httpMethod = GET,1317                                    deprecated = true1318                            )1319                    )1320                    override val supportedFeatures = SupportedFeatures(Feature.Deprecation)1321                }1322                val hikaku = Hikaku(1323                        specificationDummyConverter,1324                        implementationDummyConverter,1325                        HikakuConfig(1326                                reporters = listOf(NoOperationReporter())1327                        )1328                )1329                //when1330                assertFailsWith<AssertionFailedError> {1331                    hikaku.match()1332                }1333            }1334        }1335    }1336    @Nested1337    inner class ConfigTests {1338        @Test1339        fun `ignore endpoints with http method HEAD and OPTIONS on specification`() {1340            //given1341            val dummyConverterWithHeadAndOptions = object : EndpointConverter {1342                override val conversionResult: Set<Endpoint> = setOf(1343                        Endpoint("/todos", GET),1344                        Endpoint("/todos", HEAD),1345                        Endpoint("/todos", OPTIONS)1346                )1347                override val supportedFeatures = SupportedFeatures()1348            }1349            val dummyConverter = object : EndpointConverter {1350                override val conversionResult: Set<Endpoint> = setOf(1351                        Endpoint("/todos", GET)1352                )1353                override val supportedFeatures = SupportedFeatures()1354            }1355            val hikaku = Hikaku(1356                    dummyConverterWithHeadAndOptions,1357                    dummyConverter,1358                    HikakuConfig(1359                            filters = listOf (1360                                { endpoint -> endpoint.httpMethod == HEAD },1361                                { endpoint -> endpoint.httpMethod == OPTIONS }1362                            ),1363                            reporters = listOf(NoOperationReporter())1364                    )1365            )1366            //when1367            hikaku.match()1368        }1369        @Test1370        fun `ignore endpoints with http method HEAD and OPTIONS on implementation`() {1371            //given1372            val dummyConverter = object : EndpointConverter {1373                override val conversionResult: Set<Endpoint> = setOf(1374                        Endpoint("/todos", GET)1375                )1376                override val supportedFeatures = SupportedFeatures()1377            }1378            val dummyConverterWithHeadAndOptions = object : EndpointConverter {1379                override val conversionResult: Set<Endpoint> = setOf(1380                        Endpoint("/todos", GET),1381                        Endpoint("/todos", HEAD),1382                        Endpoint("/todos", OPTIONS)1383                )1384                override val supportedFeatures = SupportedFeatures()1385            }1386            val hikaku = Hikaku(1387                    dummyConverter,1388                    dummyConverterWithHeadAndOptions,1389                    HikakuConfig(1390                            filters = listOf (1391                                    { endpoint -> endpoint.httpMethod == HEAD },1392                                    { endpoint -> endpoint.httpMethod == OPTIONS }1393                            ),1394                            reporters = listOf(NoOperationReporter())1395                    )1396            )1397            //when1398            hikaku.match()1399        }1400        @Test1401        fun `ignore specific paths`() {1402            //given1403            val specificationDummyConverter = object : EndpointConverter {1404                override val conversionResult: Set<Endpoint> = setOf(1405                        Endpoint("/todos", GET)1406                )1407                override val supportedFeatures = SupportedFeatures()1408            }1409            val implementationDummyConverter = object : EndpointConverter {1410                override val conversionResult: Set<Endpoint> = setOf(1411                        Endpoint("/todos", GET),1412                        Endpoint("/error", GET),1413                        Endpoint("/error", HEAD),1414                        Endpoint("/error", OPTIONS),1415                        Endpoint("/actuator/health", OPTIONS)1416                )1417                override val supportedFeatures = SupportedFeatures()1418            }1419            val hikaku = Hikaku(1420                    specificationDummyConverter,1421                    implementationDummyConverter,1422                    HikakuConfig(1423                            filters = listOf (1424                                    { endpoint -> endpoint.path == "/error" },1425                                    { endpoint -> endpoint.path.startsWith("/actuator") }1426                            ),1427                            reporters = listOf(NoOperationReporter())1428                    )1429            )1430            //when1431            hikaku.match()1432        }1433    }1434    @Nested1435    inner class ReporterTests {1436        @Test1437        fun `MatchResult has to be passed to the Reporter`() {1438            //given1439            val dummyConverter = object : EndpointConverter {1440                override val conversionResult: Set<Endpoint> = setOf(1441                        Endpoint("/todos", GET)1442                )1443                override val supportedFeatures = SupportedFeatures()1444            }1445            val reporter = object : Reporter {1446                var hasBeenCalled: Boolean = false1447                override fun report(endpointMatchResult: MatchResult) {1448                    hasBeenCalled = true1449                }1450            }1451            val hikaku = Hikaku(1452                    dummyConverter,1453                    dummyConverter,1454                    HikakuConfig(1455                            reporters = listOf(reporter)1456                    )1457            )1458            //when1459            hikaku.match()1460            //then1461            assertThat(reporter.hasBeenCalled).isTrue()1462        }1463        @Test1464        fun `MatchResult can be passed to multiple Reporter`() {1465            //given1466            val dummyConverter = object : EndpointConverter {1467                override val conversionResult: Set<Endpoint> = setOf(1468                        Endpoint("/todos", GET)1469                )1470                override val supportedFeatures = SupportedFeatures()1471            }1472            val firstReporter = object : Reporter {1473                var hasBeenCalled: Boolean = false1474                override fun report(endpointMatchResult: MatchResult) {1475                    hasBeenCalled = true1476                }1477            }1478            val secondReporter = object : Reporter {1479                var hasBeenCalled: Boolean = false1480                override fun report(endpointMatchResult: MatchResult) {1481                    hasBeenCalled = true1482                }1483            }1484            val hikaku = Hikaku(1485                    dummyConverter,1486                    dummyConverter,1487                    HikakuConfig(1488                            reporters = listOf(firstReporter, secondReporter)1489                    )1490            )1491            //when1492            hikaku.match()1493            //then1494            assertThat(firstReporter.hasBeenCalled).isTrue()1495            assertThat(secondReporter.hasBeenCalled).isTrue()1496        }1497    }1498}...

Full Screen

Full Screen

Hikaku.kt

Source:Hikaku.kt Github

copy

Full Screen

1package de.codecentric.hikaku2import de.codecentric.hikaku.SupportedFeatures.Feature3import de.codecentric.hikaku.converters.EndpointConverter4import de.codecentric.hikaku.endpoints.Endpoint5import de.codecentric.hikaku.reporters.MatchResult6import de.codecentric.hikaku.reporters.Reporter7import kotlin.test.fail8/**9 * Entry point for writing a hikaku test. Provide the [EndpointConverter]s and call [match] to test if the specification and the implementation of your REST-API match.10 * @param specification An [EndpointConverter] which converts your specification for the equality check.11 * @param implementation An [EndpointConverter]  which converts your implementation for the equality check.12 * @param config The configuration is optional. It lets you control the matching.13 */14class Hikaku(15        private val specification: EndpointConverter,16        private val implementation: EndpointConverter,17        var config: HikakuConfig = HikakuConfig()18) {19    private val supportedFeatures = SupportedFeatures(specification.supportedFeatures.intersect(implementation.supportedFeatures))20    private fun Set<Endpoint>.applyConfig(config: HikakuConfig): List<Endpoint> {21        val result = this.toMutableList()22        config.filters.forEach {23            result.removeAll(this.filter(it))24        }25        return result26    }27    private fun reportResult(matchResult: MatchResult) {28        config.reporters.forEach { it.report(matchResult) }29    }30    /**31     * Calling this method creates a [MatchResult]. It will be passed to the [Reporter] defined in the configuration and call [assert] with the end result.32     */33    fun match() {34        val specificationEndpoints = specification35                .conversionResult36                .applyConfig(config)37                .toSet()38        val implementationEndpoints = implementation39                .conversionResult40                .applyConfig(config)41                .toSet()42        val notExpected = implementationEndpoints.toMutableSet()43        val notFound = specificationEndpoints.toMutableSet()44        specificationEndpoints.forEach { currentEndpoint ->45            if (iterableContains(notExpected, currentEndpoint)) {46                notExpected.removeIf(endpointMatches(currentEndpoint))47                notFound.removeIf(endpointMatches(currentEndpoint))48            }49        }50        reportResult(51                MatchResult(52                        supportedFeatures,53                        specificationEndpoints,54                        implementationEndpoints,55                        notFound,56                        notExpected57                )58        )59        if (notExpected.isNotEmpty() || notFound.isNotEmpty()) {60            fail("Implementation does not match specification.")61        }62    }63    private fun endpointMatches(otherEndpoint: Endpoint): (Endpoint) -> Boolean {64        return {...

Full Screen

Full Screen

CommandLineReporter.kt

Source:CommandLineReporter.kt Github

copy

Full Screen

1package de.codecentric.hikaku.reporters2import de.codecentric.hikaku.SupportedFeatures3import de.codecentric.hikaku.SupportedFeatures.*4import de.codecentric.hikaku.endpoints.*5/**6 * Simply prints the result to [System.out].7 */8class CommandLineReporter : Reporter {9    override fun report(endpointMatchResult: MatchResult) {10        val heading = "hikaku test result:"11        println("\n")12        println(heading)13        println("#".repeat(heading.length))14        val features = endpointMatchResult.supportedFeatures.joinToString(separator = ", ")15        println("The following features were used for matching: HttpMethod, Path, $features")16        if (endpointMatchResult.notFound.isEmpty() && endpointMatchResult.notExpected.isEmpty()) {17            println ("")18            println ("✅ Test successful. Specification and implementation match.")19        }20        if (endpointMatchResult.notFound.isNotEmpty()) {21            println("\n👀 Expected, but unable to find:")22            endpointMatchResult.notFound.forEach {23                printEndpoint(endpointMatchResult.supportedFeatures, it)...

Full Screen

Full Screen

Reporter.kt

Source:Reporter.kt Github

copy

Full Screen

1package de.codecentric.hikaku.reporters2/**3 * A [Reporter] will receive the [MatchResult] before the test terminates.4 */5interface Reporter {6    fun report(endpointMatchResult: MatchResult)7}...

Full Screen

Full Screen

NoOperationReporter.kt

Source:NoOperationReporter.kt Github

copy

Full Screen

1package de.codecentric.hikaku.reporters2/**3 * Receives the result and does nothing.4 */5class NoOperationReporter : Reporter {6    override fun report(endpointMatchResult: MatchResult) { }7}...

Full Screen

Full Screen

report

Using AI Code Generation

copy

Full Screen

1val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())2report.report()3val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())4report.report()5val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())6report.report()7val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())8report.report()9val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())10report.report()11val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())12report.report()13val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())14report.report()15val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())16report.report()17val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())18report.report()19val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())20report.report()21val report = Hikaku.convert(vertx, setOf(api, implementation), HikakuConverterOptions())22report.report()

Full Screen

Full Screen

report

Using AI Code Generation

copy

Full Screen

1hikakuReport.report(consumer, producer)2hikakuReport.report(consumer, producer)3class MyTest {4fun `check for differences between consumer and producer`() {5hikakuReport.report(consumer, producer)6}7}8class MyTest {9fun `check for differences between consumer and producer`() {10hikakuReport.report(consumer, producer)11}12}13class MyTest {14fun `check for differences between consumer and producer`() {15hikakuReport.report(consumer, producer)16}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Hikaku automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in Reporter

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful