diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerpreconfiguredsessiontests.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerpreconfiguredsessiontests.cpp
index eacaa7f4acd296ac9f1982c53e70ccec4660ce73..462e26fe8367ae48c42f210fa938afc858da48dc 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerpreconfiguredsessiontests.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerpreconfiguredsessiontests.cpp
@@ -197,17 +197,19 @@ bool ClangStaticAnalyzerPreconfiguredSessionTests::switchToProjectAndTarget(Proj
     if (project == activeProject && target == activeProject->activeTarget())
         return true; // OK, desired project/target already active.
 
-    QSignalSpy waitUntilProjectUpdated(CppModelManager::instance(),
-                                       &CppModelManager::projectPartsUpdated);
-
     if (project != activeProject)
         m_sessionManager.setStartupProject(project);
-    m_sessionManager.setActiveTarget(project, target, ProjectExplorer::SetActive::NoCascade);
 
-    const bool waitResult = waitUntilProjectUpdated.wait(30000);
-    if (!waitResult) {
-        qWarning() << "waitUntilProjectUpdated() failed";
-        return false;
+    if (target != project->activeTarget()) {
+        QSignalSpy waitUntilProjectUpdated(CppModelManager::instance(),
+                                           &CppModelManager::projectPartsUpdated);
+        m_sessionManager.setActiveTarget(project, target, ProjectExplorer::SetActive::NoCascade);
+
+        const bool waitResult = waitUntilProjectUpdated.wait(30000);
+        if (!waitResult) {
+            qWarning() << "waitUntilProjectUpdated() failed";
+            return false;
+        }
     }
 
     return true;