// Copyright 2014 The Bazel Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.devtools.build.lib.bazel.rules.java; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL; import static com.google.devtools.build.lib.packages.BuildType.TRISTATE; import static com.google.devtools.build.lib.syntax.Type.BOOLEAN; import static com.google.devtools.build.lib.syntax.Type.STRING; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses.BaseJavaBinaryRule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TriState; import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.java.JavaSemantics; import com.google.devtools.build.lib.rules.java.Jvm; /** * Rule definition for the java_test rule. */ public final class BazelJavaTestRule implements RuleDefinition { private static final String JUNIT4_RUNNER = "org.junit.runner.JUnitCore"; @Override public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { /*
name.jar
: A Java archive.name_deploy.jar
: A Java archive suitable for deployment. (Only
built if explicitly requested.)
By default, if this argument is not defined then the legacy mode is used and the
test arguments are used instead. Set the --nolegacy_bazel_java_test
flag
to not fallback on the first argument.
This attribute specifies the name of a Java class to be run by
this test. It is rare to need to set this. If this argument is omitted, the Java class
whose name corresponds to the name
of this
java_test
rule will be used.
For JUnit3, the test class needs to either be a subclass of
junit.framework.TestCase
or it needs to have a public
static suite()
method that returns a
junit.framework.Test
(or a subclass of Test
).
For JUnit4, the class needs to be annotated with
org.junit.runner.RunWith
.
This attribute allows several java_test
rules to
share the same Test
(TestCase
, TestSuite
, ...). Typically
additional information is passed to it
(e.g. via jvm_flags=['-Dkey=value']
) so that its
behavior differs in each case, such as running a different
subset of the tests. This attribute also enables the use of
Java tests outside the javatests
tree.
A java_test()
rule compiles a Java test. A test is a binary wrapper around your
test code. The test runner's main method is invoked instead of the main class being compiled.
See the section on java_binary() arguments. This rule also supports all attributes common to all test rules (*_test).
java_library( name = "tests", srcs = glob(["*.java"]), deps = [ "//java/com/foo/base:testResources", "//java/com/foo/testing/util", ], ) java_test( name = "AllTests", size = "small", runtime_deps = [ ":tests", "//util/mysql", ], )*/