diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index f17db8b4eeafb7643432580387ea9c86afd83220..0a975b1834e2bbff44ab89b63d12e3785a1a26de 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -6,18 +6,21 @@ on:
 env:
   HOMEBREW_DEVELOPER: 1
   HOMEBREW_NO_AUTO_UPDATE: 1
+  HOMEBREW_GITHUB_ACTIONS_BIG_SUR_TESTING: 1 # TODO: remove when Big Sur is released.
 jobs:
   tests:
     if: github.repository == 'Homebrew/brew'
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        os: [ubuntu-latest, macOS-latest]
+        os: [ubuntu-latest, macOS-latest, macOS-11.0]
         include:
           - os: ubuntu-latest
             core-tap: 'linuxbrew-core'
           - os: macOS-latest
             core-tap: 'homebrew-core'
+          - os: macOS-11.0
+            core-tap: 'homebrew-core'
     steps:
     - name: Set up Homebrew
       id: set-up-homebrew
@@ -30,6 +33,10 @@ jobs:
 
     - run: brew test-bot --only-cleanup-before
 
+    - name: Set up Xcode
+      if: matrix.os == 'macOS-11.0'
+      run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
+
     - run: brew config
 
     # Can't cache this because we need to check that it doesn't fail the
@@ -60,7 +67,7 @@ jobs:
       run: brew man --fail-if-changed
 
     - name: Install brew tests dependencies
-      if: matrix.os == 'macOS-latest'
+      if: matrix.os != 'ubuntu-latest'
       run: |
         brew install subversion
         Library/Homebrew/shims/scm/svn --homebrew=print-path
@@ -108,7 +115,7 @@ jobs:
       run: brew style --display-cop-names homebrew/bundle homebrew/services homebrew/test-bot
 
     - name: Run brew cask style on all taps
-      if: matrix.os == 'macOS-latest'
+      if: matrix.os != 'ubuntu-latest'
       run: |
         brew tap homebrew/cask
         brew tap homebrew/cask-drivers
diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb
index 7b05358af47660bd20414f8c3a10ff14ad3d46a1..46974b7f61d31ab7925decad8e84a584fd81fd17 100644
--- a/Library/Homebrew/extend/os/mac/diagnostic.rb
+++ b/Library/Homebrew/extend/os/mac/diagnostic.rb
@@ -93,6 +93,9 @@ module Homebrew
       def check_for_unsupported_macos
         return if Homebrew::EnvConfig.developer?
 
+        # TODO: remove when Big Sur is released.
+        return if MacOS.version == :big_sur && ENV["HOMEBREW_GITHUB_ACTIONS_BIG_SUR_TESTING"]
+
         who = +"We"
         if OS::Mac.prerelease?
           what = "pre-release version"
diff --git a/Library/Homebrew/test/os/mac/diagnostic_spec.rb b/Library/Homebrew/test/os/mac/diagnostic_spec.rb
index de6ed40659cd57bd752d95453c4baf042cdb8101..3528775e546f1624be0d8e28cc068487d457251a 100644
--- a/Library/Homebrew/test/os/mac/diagnostic_spec.rb
+++ b/Library/Homebrew/test/os/mac/diagnostic_spec.rb
@@ -6,6 +6,7 @@ require "diagnostic"
 describe Homebrew::Diagnostic::Checks do
   specify "#check_for_unsupported_macos" do
     ENV.delete("HOMEBREW_DEVELOPER")
+    allow(OS::Mac).to receive(:version).and_return(OS::Mac::Version.new("10.14"))
     allow(OS::Mac).to receive(:prerelease?).and_return(true)
 
     expect(subject.check_for_unsupported_macos)
diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb
index 78d0dee36d229a03488a583bfbdad24d57a8a1c6..91697e5218a93811c94fcde8a30c98da8206a28e 100644
--- a/Library/Homebrew/test/spec_helper.rb
+++ b/Library/Homebrew/test/spec_helper.rb
@@ -109,7 +109,7 @@ RSpec.configure do |config|
 
   config.before(:each, :needs_java) do
     java_installed = if OS.mac?
-      Utils.popen_read("/usr/libexec/java_home", "--failfast")
+      Utils.popen_read("/usr/libexec/java_home", "--failfast", "--version", "1.0+")
       $CHILD_STATUS.success?
     else
       which("java")