Skip to content

Instantly share code, notes, and snippets.

@aweigold
Last active December 20, 2015 23:38
Show Gist options
  • Save aweigold/6213514 to your computer and use it in GitHub Desktop.
Save aweigold/6213514 to your computer and use it in GitHub Desktop.
Running custom builds for IntelliJ JUnit runner http://www.adamweigold.com/2013/08/intellij-idea-junit-running-and-non.html IntelliJ Idea provides some really awesome JUnit runners that allow you to right click test methods, classes, and packages, and quickly run/debug them. The default JUnit configuration runs Idea's "Make" prior to running you…
apply plugin: 'idea'
idea {
project {
ipr.withXml {
// Create a task to run gradle testClasses, which we will subsequiently bind to Default JUnit runner to
def runConfigComp = it.node.appendNode('component')
def runOpts = [
"default": "false",
"name": "testClasses for JUnit",
"type": "GroovyScriptRunConfiguration",
"factoryName": "Groovy"
]
def testClassesConfigurationNode = runConfigComp.appendNode('configuration', runOpts)
testClassesConfigurationNode.appendNode("setting", [name: "path", value: 'file://$PROJECT_DIR$/build.gradle'])
testClassesConfigurationNode.appendNode("setting", [name: "params", value: "testClasses"])
testClassesConfigurationNode.appendNode("setting", [name: "workDir", value: 'file://$PROJECT_DIR$'])
testClassesConfigurationNode.appendNode("setting", [name: "debug", value: "false"])
testClassesConfigurationNode.appendNode("RunnerSettings", [RunnerId: 'Run'])
testClassesConfigurationNode.appendNode("ConfigurationWrapper", [RunnerId: 'Run'])
testClassesConfigurationNode.appendNode("method").appendNode("option", [name: "Make", enabled: "false"])
// Updates default JUnit settings, adding UseSplitVerifier, and swapping Make with testClasses
runOpts = [
"default": "true",
"name": "JUnit",
"type": "JUnit",
"factoryName": "JUnit"
]
def jUnitConfigurationNode = runConfigComp.appendNode('configuration', runOpts)
jUnitConfigurationNode.appendNode("extension", [
name: "coverage",
enabled: "false",
merge: "false",
runner: "idea"
])
jUnitConfigurationNode.appendNode("option", [name: "TEST_OBJECT", value: "class"])
jUnitConfigurationNode.appendNode("option", [name: "VM_PARAMETERS", value: "-ea -XX:-UseSplitVerifier -XX:MaxPermSize=2048m"])
jUnitConfigurationNode.appendNode("option", [name: "WORKING_DIRECTORY", value: 'file://$MODULE_DIR$'])
jUnitConfigurationNode.appendNode("option", [name: "PASS_PARENT_ENVS", value: "true"])
jUnitConfigurationNode.appendNode("option", [name: "TEST_SEARCH_SCOPE"]).appendNode("value", [defaultName: "moduleWithDependencies"])
def jUnitMethodNode = jUnitConfigurationNode.appendNode("method")
jUnitMethodNode.appendNode("option", [name: "Make", enabled: "false"])
jUnitMethodNode.appendNode("option", [name: "RunConfigurationTask", enabled: "true", run_configuration_name: "testClasses for JUnit", run_configuration_type: "GroovyScriptRunConfiguration"])
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment