diff --git a/java/java.go b/java/java.go
index dd24376..9dd5850 100644
--- a/java/java.go
+++ b/java/java.go
@@ -888,10 +888,6 @@
 
 	// a list of extra test configuration files that should be installed with the module.
 	Extra_test_configs []string `android:"path,arch_variant"`
-
-	// Extra <option> tags to add to the auto generated test xml file. The "key"
-	// is optional in each of these.
-	Tradefed_options []tradefed.Option
 }
 
 type testProperties struct {
@@ -1170,18 +1166,8 @@
 		j.testProperties.Test_options.Unit_test = proptools.BoolPtr(defaultUnitTest)
 	}
 
-	j.testConfig = tradefed.NewMaybeAutoGenTestConfigBuilder(ctx).
-		SetTestConfigProp(j.testProperties.Test_config).
-		SetTestTemplateConfigProp(j.testProperties.Test_config_template).
-		SetTestSuites(j.testProperties.Test_suites).
-		SetConfig(configs).
-		SetOptionsForAutogenerated(j.testProperties.Test_options.Tradefed_options).
-		SetAutoGenConfig(j.testProperties.Auto_gen_config).
-		SetUnitTest(j.testProperties.Test_options.Unit_test).
-		SetDeviceTemplate("${JavaTestConfigTemplate}").
-		SetHostTemplate("${JavaHostTestConfigTemplate}").
-		SetHostUnitTestTemplate("${JavaHostUnitTestConfigTemplate}").
-		Build()
+	j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.testProperties.Test_config, j.testProperties.Test_config_template,
+		j.testProperties.Test_suites, configs, j.testProperties.Auto_gen_config, j.testProperties.Test_options.Unit_test)
 
 	j.data = android.PathsForModuleSrc(ctx, j.testProperties.Data)
 
@@ -1226,13 +1212,8 @@
 }
 
 func (j *JavaTestImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
-	j.testConfig = tradefed.NewMaybeAutoGenTestConfigBuilder(ctx).
-		SetTestConfigProp(j.prebuiltTestProperties.Test_config).
-		SetTestSuites(j.prebuiltTestProperties.Test_suites).
-		SetDeviceTemplate("${JavaTestConfigTemplate}").
-		SetHostTemplate("${JavaHostTestConfigTemplate}").
-		SetHostUnitTestTemplate("${JavaHostUnitTestConfigTemplate}").
-		Build()
+	j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.prebuiltTestProperties.Test_config, nil,
+		j.prebuiltTestProperties.Test_suites, nil, nil, nil)
 
 	j.Import.GenerateAndroidBuildActions(ctx)
 }
diff --git a/java/java_test.go b/java/java_test.go
index 62a372c..dff1fd0 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -1945,25 +1945,3 @@
 		}
 	}
 }
-
-func TestTradefedOptions(t *testing.T) {
-	result := PrepareForTestWithJavaBuildComponents.RunTestWithBp(t, `
-java_test_host {
-	name: "foo",
-	test_options: {
-		tradefed_options: [
-			{
-				name: "exclude-path",
-				value: "org/apache"
-			}
-		]
-	}
-}
-`)
-	args := result.ModuleForTests("foo", "linux_glibc_common").
-		Output("out/soong/.intermediates/foo/linux_glibc_common/foo.config").Args
-	expected := proptools.NinjaAndShellEscape("<option name=\"exclude-path\" value=\"org/apache\" />")
-	if args["extraConfigs"] != expected {
-		t.Errorf("Expected args[\"extraConfigs\"] to equal %q, was %q", expected, args["extraConfigs"])
-	}
-}
diff --git a/java/robolectric.go b/java/robolectric.go
index 6a2d0b3..938abe1 100644
--- a/java/robolectric.go
+++ b/java/robolectric.go
@@ -131,14 +131,9 @@
 	r.forceOSType = ctx.Config().BuildOS
 	r.forceArchType = ctx.Config().BuildArch
 
-	r.testConfig = tradefed.NewMaybeAutoGenTestConfigBuilder(ctx).
-		SetTestConfigProp(r.testProperties.Test_config).
-		SetTestTemplateConfigProp(r.testProperties.Test_config_template).
-		SetTestSuites(r.testProperties.Test_suites).
-		SetAutoGenConfig(r.testProperties.Auto_gen_config).
-		SetDeviceTemplate("${RobolectricTestConfigTemplate}").
-		SetHostTemplate("${RobolectricTestConfigTemplate}").
-		Build()
+	r.testConfig = tradefed.AutoGenRobolectricTestConfig(ctx, r.testProperties.Test_config,
+		r.testProperties.Test_config_template, r.testProperties.Test_suites,
+		r.testProperties.Auto_gen_config)
 	r.data = android.PathsForModuleSrc(ctx, r.testProperties.Data)
 
 	roboTestConfig := android.PathForModuleGen(ctx, "robolectric").
