picimako / citric Goto Github PK
View Code? Open in Web Editor NEWCitrus framework integration for the IntelliJ platform.
Citrus framework integration for the IntelliJ platform.
Generate @CitrusTestSource test method action in the Alt+Insert Generate menu.
There is Java methods that accept resource paths, including paths of classpath resources. To make the navigation to those resources quicker, line markers could be added.
classpath:
.Citrus supports defining custom locations for the citrus-application.properties
file. Support for custom locations could be added, so that
are available for them.
citrus-application.properties
would be supported regardless of the presence of any additional paths/file names in the plugin settings.Currently function and validation matcher code completion is available only in Java String literals. Since they can be used in many other places, extend the list of them.
This would enable the feature e.g. in separate request and response body files and YAKS feature files.
File type | Location |
---|---|
XML | tag value, tag attribute value |
JSON | property value, string literal |
YAML | property value |
Groovy | String literal |
Gherkin | step value, data table cell, Examples table cell |
Citrus provides dedicated, so-called functions for generating data at various locations. These are prefixed with citrus:
. To simplify the discovery of these functions, code completion could be implemented.
citrus:
, and ideally citrus:.*
with arbitrary text after the prefix for which it is true that at least one of the functions start with that text.@CitrusTestSource
annotated methods reference test scripts and test descriptor files in other DSLs. To make the lookup and navigation to those files simpler and quicker, some kind of navigation option should be implemented.
sources
attribute will support only classpath resource paths, for now.name | packageName | packageScan | sources | Executed |
---|---|---|---|---|
Java test method name in package of the declaring class. | ||||
+ | name attribute value + file extension of type in package of the declaring class. |
|||
+ | Java test method name in the packageName package. |
|||
+ | The Java test method name is ignored. Test names are the ones found in the packageScan package. |
|||
+ | The files specified in sources in the packages of files specified in sources |
|||
+ | + | name attribute value + file extension of type in packageName package. |
||
+ | + | name attribute value + file extension of type from the current package, AND all tests in the packageScan package. |
||
+ | + | Only the files specified in sources , but a GroovyTestLoader is also created for name which is not executed. |
||
+ | + | Only the files found in packageScan . |
||
+ | + | + | name attribute value + file extension of type from the packageName package, AND all tests in the packageScan package. |
|
+ | + | Only the files specified in sources . |
||
+ | + | + | Only the files specified in sources , but a GroovyTestLoader is also created for name which is not executed. |
|
+ | + | Files found in packageScan , AND in source . |
||
+ | + | + | Only the name attribute value + file extension of type from the current package but GroovyTestLoaders are also created for packageScan and sources that are not executed. |
|
+ | + | + | Only the files specified in packageScan and sources . |
|
+ | + | + | + | name attribute value + file extension of type from the packageName package, AND sources , but GroovyTestLoaders are also created for packageScan which are not executed. |
Citrus provides a feature to trace incoming and outgoing messages with its dedicated file extension .msgs
.
To prepare for and to support advanced features like language injections, code folding of messages, and potential other stuff, create a dedicated file type for this file extension.
.msgs
files..msgs
file, and maybe other statistics as e.g. Project View node decoration.In a similar fashion to #14 , validation matchers could also be code completed.
Citric provides code completion for Citrus properties in citrus-application.properties
files, but description is not added for some of the properties when they are displayed as completion items.
Citrus v4 add Quarkus runtime support.
@org.citrusframework.quarkus.CitrusSupport
but not with @QuarkusTest
, then it is probably an issue to report.@QuarkusTest
but not with @org.citrusframework.quarkus.CitrusSupport
, and when the class has Citrus specific injected fields like @CitrusFramework
, @BindToRegistry
, etc. then the class must be reported to be annotated as @CitrusSupport
too.@com.consol.citrus/org.citrusframework.junit.jupiter.CitrusSupport
used on a @QuarkusTest
annotated test class, instead of @org.citrusframework.quarkus.CitrusSupport
.Although Citric provides annotators to highlight Citrus function and validation matcher expressions, they don't work well for when they are nested in each other.
org.citrusframework.context.TestContext#replaceDynamicContentInString(java.lang.String, boolean)
org.citrusframework.variable.VariableUtils
org.citrusframework.functions.FunctionUtils
org.citrusframework.validation.matcher.ValidationMatcherUtils
Citrus functions and validation matchers are currently highlighted in Java String literal, but there is no option to disable them in case users want to disable them.
There are a handful of @*EndpointConfig
/ @*ClientConfig
/ @*ServerConfig
annotations whose parser classes throw exceptions if the annotation configuration is not valid. In order to signal those invalid configurations, an inspection could be useful.
@JmsEndpointConfig
@JmsSyncEndpointConfig
@KafkaEndpointConfig
@HttpClientConfig
@HttpServerConfig
@WebServiceClientConfig
There are various types of resources that can be injected by Citrus, like Citrus
, TestCaseRunner
, endpoints, and others.
In order to identify usage issues earlier, one or more inspections could be useful.
@CitrusFramework
but the field type is not Citrus
.
Citrus
object into the field.@CitrusEndpoint
but the field type is not Endpoint
or one of its inheritors.
Endpoint
object into the field.@*EndpointConfig
annotations but it is not annotated with @CitrusEndpoint
.
Endpoint
object into the field, and then be able to override its properties.Endpoint
but the @*EndpointConfig
annotation on the field doesn't match the type.
DirectEndpoint
field annotated with @CamelEndpointConfig
.#2 introduced an action to generate @CitrusTestSource
test method but its behaviour is not customizable at the moment.
Certain issues could be detected by static analysing the configuration of @CitrusTestSource
annotations.
name
is the same as the test method's name, the value from name
can be removed.packageName
is the same as the package of the current test class, the packageName
attribute can be removed.type
must not be specified at the end of the values in name
.sources
must match the file extension of the test type in type
.name
and sources
may be deduplicated.@CitrusTestFactory
annotated Citrus JUnit5 test methods.@CitrusTestFactory
methods must not be private or static@CitrusTestFactory
methods must have the proper return types@CitrusTestFactory
annotated method doesn't need the JUnit @TestFactory
annotation.There is already some code completion support for citrus-application.properties
, but that configuration file has more potential for integration with the IDE.
Citrus provides various DSLs besides Java to write tests, and one among them is YAML files.
citrus.yaml.file.name.pattern
property of the citrus-application.properties
.
citrus.yaml.file.name.pattern
property is not specified or is blank, then it will fall back to the Citrus defaults..yml
or .yaml
extension should be excluded.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.