diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index e162a66..8c6f153 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -65,7 +65,6 @@
         "//src/test/java/com/google/devtools/build/lib/testing/common:srcs",
         "//src/test/java/com/google/devtools/build/lib/testutil:srcs",
         "//src/test/java/com/google/devtools/build/lib/view/cpp:srcs",
-        "//src/test/java/com/google/devtools/build/lib/view/go:srcs",
         "//src/test/java/com/google/devtools/build/lib/view/java:srcs",
         "//src/test/java/com/google/devtools/build/lib/view/util:srcs",
         "//src/test/java/com/google/devtools/build/lib/windows:srcs",
diff --git a/src/test/java/com/google/devtools/build/lib/view/go/BUILD b/src/test/java/com/google/devtools/build/lib/view/go/BUILD
deleted file mode 100644
index c96cf9c..0000000
--- a/src/test/java/com/google/devtools/build/lib/view/go/BUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-# TODO(steinman): Go view test cases.
-load("@rules_java//java:defs.bzl", "java_test")
-
-package(
-    default_testonly = 1,
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])
-
-filegroup(
-    name = "srcs",
-    testonly = 0,
-    srcs = glob(["*"]),
-    visibility = ["//src:__subpackages__"],
-)
-
-java_test(
-    name = "GoStarlarkApiTest",
-    srcs = ["GoStarlarkApiTest.java"],
-    tags = ["manual"],
-    runtime_deps = ["//src/test/java/com/google/devtools/build/lib/analysis/util"],
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
-        "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//src/test/java/com/google/devtools/build/lib/packages:testutil",
-        "//third_party:junit4",
-        "//third_party:truth",
-    ],
-)
-
-java_test(
-    name = "GoCompileOnlyTest",
-    srcs = ["GoCompileOnlyTest.java"],
-    tags = ["manual"],
-    runtime_deps = ["//src/test/java/com/google/devtools/build/lib/analysis/util"],
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
-        "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//third_party:junit4",
-        "//third_party:truth",
-    ],
-)
diff --git a/src/test/java/com/google/devtools/build/lib/view/go/GoCompileOnlyTest.java b/src/test/java/com/google/devtools/build/lib/view/go/GoCompileOnlyTest.java
deleted file mode 100644
index c61910c..0000000
--- a/src/test/java/com/google/devtools/build/lib/view/go/GoCompileOnlyTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2022 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.view.go;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.util.CompileOnlyTestCase;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/** Unit tests that validate --compile_only behavior. */
-@RunWith(JUnit4.class)
-public class GoCompileOnlyTest extends CompileOnlyTestCase {
-
-  @Test
-  public void testGoCompileOnly() throws Exception {
-    scratch.file(
-        "go_test/main/BUILD",
-        "go_binary(",
-        "    name = 'main',",
-        "    deps = ['//go_test/hello'],",
-        "    srcs = ['main.go'],",
-        ")");
-    scratch.file(
-        "go_test/hello/BUILD",
-        "go_test(",
-        "    name = 'hello_test',",
-        "    srcs = [",
-        "        'hello_test.go'",
-        "    ],",
-        "    library = ':hello'",
-        ")",
-        "go_library(",
-        "    name = 'hello',",
-        "    srcs = [",
-        "        'hello.go'",
-        "    ],",
-        ")");
-    scratch.file(
-        "go_test/main/main.go",
-        "package main",
-        "import \"go_test/hello/hello\"",
-        "func main() {",
-        "  hello.Hello();",
-        "}");
-    scratch.file(
-        "go/hello/hello.go",
-        "package hello;",
-        "",
-        "func Hello() {",
-        "  fmt.Println(`Hello!`)",
-        "}");
-    scratch.file(
-        "go_test/hello/hello_test.go",
-        "package hello_test",
-        "import \"testing\"",
-        "func TestHello(t *testing.T) {}");
-
-    ConfiguredTarget binaryTarget = getConfiguredTarget("//go_test/main:main");
-    // Check that only the package been compiled and not the linked binary.
-    assertThat(getArtifactByExecPathSuffix(binaryTarget, "/main.a")).isNotNull();
-    assertThat(getArtifactByExecPathSuffix(binaryTarget, "/main")).isNull();
-
-    ConfiguredTarget libTarget = getConfiguredTarget("//go_test/hello:hello");
-    assertThat(getArtifactByExecPathSuffix(libTarget, "/hello.a")).isNotNull();
-
-    ConfiguredTarget testTarget = getConfiguredTarget("//go_test/hello:hello_test");
-    assertThat(getArtifactByExecPathSuffix(testTarget, "/hello_test_testlib.a")).isNotNull();
-  }
-}
diff --git a/src/test/java/com/google/devtools/build/lib/view/go/GoStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/view/go/GoStarlarkApiTest.java
deleted file mode 100644
index bf4d0bb..0000000
--- a/src/test/java/com/google/devtools/build/lib/view/go/GoStarlarkApiTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2022 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.view.go;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.packages.util.MockProtoSupport;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/** Tests Starlark API for Go rules. */
-@RunWith(JUnit4.class)
-public class GoStarlarkApiTest extends BuildViewTestCase {
-
-  /**
-   * Tests that go_proto_library's aspect exposes a Starlark provider "aspect_proto_go_api_info".
-   */
-  @Test
-  public void testGoProtoLibraryAspectProviders() throws Exception {
-    MockProtoSupport.setup(mockToolsConfig);
-    scratch.file(
-        "x/aspect.bzl",
-        "def _foo_aspect_impl(target,ctx):",
-        "  proto_found = hasattr(target, 'aspect_proto_go_api_info')",
-        "  if hasattr(ctx.rule.attr, 'deps'):",
-        "    for dep in ctx.rule.attr.deps:",
-        "      proto_found = proto_found or dep.proto_found",
-        "  return struct(proto_found = proto_found)",
-        "foo_aspect = aspect(",
-        "    _foo_aspect_impl,",
-        "    attr_aspects = ['deps'],",
-        "    required_aspect_providers=['aspect_proto_go_api_info'])",
-        "def _rule_impl(ctx):",
-        "  return struct(result = ctx.attr.dep.proto_found)",
-        "foo_rule = rule(_rule_impl, attrs = {'dep' : attr.label(aspects = [foo_aspect])})");
-    scratch.file(
-        "x/BUILD",
-        "load(':aspect.bzl', 'foo_rule')",
-        "go_proto_library(",
-        "    name = 'foo_go_proto',",
-        "    deps = ['foo_proto'],",
-        ")",
-        "proto_library(",
-        "    name = 'foo_proto',",
-        "    srcs = ['foo.proto'],",
-        ")",
-        "foo_rule(",
-        "    name = 'foo_rule',",
-        "    dep = 'foo_go_proto',",
-        ")");
-    ConfiguredTarget target = getConfiguredTarget("//x:foo_rule");
-    Boolean result = (Boolean) target.get("result");
-
-    // 'result' is true iff "aspect_proto_go_api_info" was found on the proto_library +
-    // go_proto_library aspect.
-    assertThat(result).isTrue();
-  }
-}
