diff --git a/tests/Test.cpp b/tests/Test.cpp
index 07107bc..bebb351 100644
--- a/tests/Test.cpp
+++ b/tests/Test.cpp
@@ -83,15 +83,24 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
+#if SK_SUPPORT_GPU
+    static SkAutoTUnref<SkNativeGLContext> gGLContext;
+    static SkAutoTUnref<GrContext> gGrContext;
+#endif
+
+void GpuTest::DestroyContext() {
+#if SK_SUPPORT_GPU
+    // preserve this order, we want gGrContext destroyed after gEGLContext
+    gGLContext.reset(NULL);
+    gGrContext.reset(NULL);
+#endif
+}
+
 
 GrContext* GpuTest::GetContext() {
 #if SK_SUPPORT_GPU
-    // preserve this order, we want gGrContext destroyed after gEGLContext
-    static SkTLazy<SkNativeGLContext> gGLContext;
-    static SkAutoTUnref<GrContext> gGrContext;
-
     if (NULL == gGrContext.get()) {
-        gGLContext.init();
+        gGLContext.reset(new SkNativeGLContext());
         if (gGLContext.get()->init(800, 600)) {
             GrBackendContext ctx = reinterpret_cast<GrBackendContext>(gGLContext.get()->gl());
             gGrContext.reset(GrContext::Create(kOpenGL_GrBackend, ctx));
diff --git a/tests/Test.h b/tests/Test.h
index f87a7a0..2cbd00b 100644
--- a/tests/Test.h
+++ b/tests/Test.h
@@ -104,6 +104,7 @@
             fContext = GetContext();
         }
         static GrContext* GetContext();
+        static void DestroyContext();
     protected:
         GrContext* fContext;
     private:
diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
index 560abb2..a744801 100644
--- a/tests/skia_test.cpp
+++ b/tests/skia_test.cpp
@@ -186,6 +186,7 @@
 #endif
 
     SkGraphics::Term();
+    GpuTest::DestroyContext();
 
     return (failCount == 0) ? 0 : 1;
 }
