diff --git a/packages/apbs/package.py b/packages/apbs/package.py
index 288b92f62c435d3d201cd2cee1c11bf8d3197e71..f53769a3f2e5b2ce8008067ce7e79bd1493a6d74 100644
--- a/packages/apbs/package.py
+++ b/packages/apbs/package.py
@@ -30,17 +30,43 @@ class Apbs(CMakePackage):
     version('3.4.0', sha256='572ff606974119430020ec948c78e171d8525fb0e67a56dad937a897cac67461')
 
     # Dependencies.
-    depends_on('cmake@3.19', type='build')
-    depends_on('python@3.8:3.10', type=('build', 'run'))
-    depends_on('blas', type=('build', 'run'))
-    depends_on('suite-sparse', type=('build', 'run'))
-    depends_on('maloc', type=('build', 'run'))
+    depends_on('cmake@3.19',        type=('build'))
+    depends_on('bison',             type=('build')) 
+    depends_on('flex',              type=('build'))
+    depends_on('swig',              type=('build'))
+    depends_on('readline',          type=('build', 'run'))
+    depends_on('eigen',             type=('build', 'run'))
+    depends_on('boost',             type=('build', 'run'))
+    depends_on('blas',              type=('build', 'run'))
+    depends_on('arpack-ng',         type=('build', 'run'))
+    depends_on('suite-sparse+tbb',  type=('build', 'run'))
+    depends_on('maloc',             type=('build', 'run'))
+    depends_on('python@3.8:3.10',   type=('build', 'run'))
 
     def cmake_args(self):
         # Min and max Python versions need to be set as variables to pass tests.
         # See tests/CMakeLists.txt lines 6-14.
+        python_version = str(self.spec['python'].version)
         args = [
-                '-DPYTHON_MIN_VERSION=3.8',
-                '-DPYTHON_MAX_VERSION=3.10',
+                '-DPYTHON_MIN_VERSION='+python_version,
+                '-DPYTHON_MAX_VERSION='+python_version
                 ]
         return args
+
+    def setup_build_environment(self, env):
+        # add suite-sparse libs to path because tests can't find them
+        env.prepend_path("LD_LIBRARY_PATH", self.spec['suite-sparse'].prefix.lib)
+
+    @run_after('install')
+    @on_package_attributes(run_tests=True)
+    def install_test(self):
+        with working_dir(self.build_directory):
+            # for testing, apbs needs to be in the path
+            import os
+            os.environ['PATH'] = self.prefix.bin + ':' + os.environ['PATH']
+            ctest = which("ctest")
+            ctest("-C", "Release", "--output-on-failure")
+
+    def check(self):
+        # this would run "make test" before installation, so we override this and define install_test() instead
+        pass