diff --git a/src/wallet/test/accounting_tests.cpp b/src/wallet/test/accounting_tests.cpp
--- a/src/wallet/test/accounting_tests.cpp
+++ b/src/wallet/test/accounting_tests.cpp
@@ -10,16 +10,15 @@
 
 #include <cstdint>
 
-extern std::unique_ptr<CWallet> pwalletMain;
-
 BOOST_FIXTURE_TEST_SUITE(accounting_tests, WalletTestingSetup)
 
-static void GetResults(std::map<Amount, CAccountingEntry> &results) {
+static void GetResults(CWallet *wallet,
+                       std::map<Amount, CAccountingEntry> &results) {
     std::list<CAccountingEntry> aes;
 
     results.clear();
-    BOOST_CHECK(pwalletMain->ReorderTransactions() == DBErrors::LOAD_OK);
-    pwalletMain->ListAccountCreditDebit("", aes);
+    BOOST_CHECK(wallet->ReorderTransactions() == DBErrors::LOAD_OK);
+    wallet->ListAccountCreditDebit("", aes);
     for (CAccountingEntry &ae : aes) {
         results[ae.nOrderPos * SATOSHI] = ae;
     }
@@ -50,7 +49,7 @@
     ae.strOtherAccount = "c";
     pwalletMain->AddAccountingEntry(ae);
 
-    GetResults(results);
+    GetResults(pwalletMain.get(), results);
 
     BOOST_CHECK(pwalletMain->nOrderPosNext == 3);
     BOOST_CHECK(2 == results.size());
@@ -65,7 +64,7 @@
     ae.nOrderPos = pwalletMain->IncOrderPosNext();
     pwalletMain->AddAccountingEntry(ae);
 
-    GetResults(results);
+    GetResults(pwalletMain.get(), results);
 
     BOOST_CHECK(results.size() == 3);
     BOOST_CHECK(pwalletMain->nOrderPosNext == 4);
@@ -98,7 +97,7 @@
     vpwtx[2]->nTimeReceived = (unsigned int)1333333329;
     vpwtx[2]->nOrderPos = -1;
 
-    GetResults(results);
+    GetResults(pwalletMain.get(), results);
 
     BOOST_CHECK(results.size() == 3);
     BOOST_CHECK(pwalletMain->nOrderPosNext == 6);
@@ -115,7 +114,7 @@
     ae.nOrderPos = -1;
     pwalletMain->AddAccountingEntry(ae);
 
-    GetResults(results);
+    GetResults(pwalletMain.get(), results);
 
     BOOST_CHECK(results.size() == 4);
     BOOST_CHECK(pwalletMain->nOrderPosNext == 7);
diff --git a/src/wallet/test/wallet_test_fixture.h b/src/wallet/test/wallet_test_fixture.h
--- a/src/wallet/test/wallet_test_fixture.h
+++ b/src/wallet/test/wallet_test_fixture.h
@@ -5,6 +5,8 @@
 #ifndef BITCOIN_WALLET_TEST_FIXTURE_H
 #define BITCOIN_WALLET_TEST_FIXTURE_H
 
+#include <wallet/wallet.h>
+
 #include <test/test_bitcoin.h>
 
 /**
@@ -14,6 +16,8 @@
     explicit WalletTestingSetup(
         const std::string &chainName = CBaseChainParams::MAIN);
     ~WalletTestingSetup();
+
+    std::unique_ptr<CWallet> pwalletMain;
 };
 
 #endif
diff --git a/src/wallet/test/wallet_test_fixture.cpp b/src/wallet/test/wallet_test_fixture.cpp
--- a/src/wallet/test/wallet_test_fixture.cpp
+++ b/src/wallet/test/wallet_test_fixture.cpp
@@ -8,9 +8,6 @@
 #include <rpc/server.h>
 #include <wallet/db.h>
 #include <wallet/rpcdump.h>
-#include <wallet/wallet.h>
-
-std::unique_ptr<CWallet> pwalletMain;
 
 WalletTestingSetup::WalletTestingSetup(const std::string &chainName)
     : TestingSetup(chainName) {
@@ -29,7 +26,6 @@
 
 WalletTestingSetup::~WalletTestingSetup() {
     UnregisterValidationInterface(pwalletMain.get());
-    pwalletMain.reset();
 
     bitdb.Flush(true);
     bitdb.Reset();
diff --git a/src/wallet/test/wallet_tests.cpp b/src/wallet/test/wallet_tests.cpp
--- a/src/wallet/test/wallet_tests.cpp
+++ b/src/wallet/test/wallet_tests.cpp
@@ -24,8 +24,6 @@
 #include <utility>
 #include <vector>
 
-extern std::unique_ptr<CWallet> pwalletMain;
-
 // how many times to run all the tests to have a chance to catch errors that
 // only show up with particular random shuffles
 #define RUN_TESTS 100