diff --git a/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift b/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift
index 8d6e211..cbcaa15 100644
--- a/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift
+++ b/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift
@@ -14,7 +14,7 @@
 // CHECK: Test Suite '.*\.xctest' started at \d+:\d+:\d+\.\d+
 
 // CHECK: Test Suite 'PredicateExpectationsTestCase' started at \d+:\d+:\d+\.\d+
-class NSPredicateExpectationsTestCase: XCTestCase {
+class PredicateExpectationsTestCase: XCTestCase {
     // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicateAndObject_passes' started at \d+:\d+:\d+\.\d+
     // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicateAndObject_passes' passed \(\d+\.\d+ seconds\).
     func test_immediatelyTruePredicateAndObject_passes() {
diff --git a/Tests/Functional/Asynchronous/Predicates/Handler/main.swift b/Tests/Functional/Asynchronous/Predicates/Handler/main.swift
index 22cea12..bd34f1a 100644
--- a/Tests/Functional/Asynchronous/Predicates/Handler/main.swift
+++ b/Tests/Functional/Asynchronous/Predicates/Handler/main.swift
@@ -18,7 +18,7 @@
     // CHECK: Test Case 'PredicateHandlerTestCase.test_predicateIsTrue_handlerReturnsTrue_passes' started at \d+:\d+:\d+\.\d+
     // CHECK: Test Case 'PredicateHandlerTestCase.test_predicateIsTrue_handlerReturnsTrue_passes' passed \(\d+\.\d+ seconds\).
     func test_predicateIsTrue_handlerReturnsTrue_passes() {
-        let predicate = Predicate(value: true)
+        let predicate = NSPredicate(value: true)
         let object = NSObject()
         self.expectation(for: predicate, evaluatedWith: object, handler: { _ in
             return true
@@ -29,7 +29,7 @@
     // CHECK: .*/Tests/Functional/Asynchronous/Predicates/Handler/main.swift:[[@LINE+8]]: error: PredicateHandlerTestCase.test_predicateIsTrue_handlerReturnsFalse_fails : Asynchronous wait failed - Exceeded timeout of 0.1 seconds, with unfulfilled expectations: Expect `<Predicate: 0x[0-9a-fA-F]{1,16}>` for object <NSObject: 0x[0-9a-fA-F]{1,16}>
     // CHECK: Test Case 'PredicateHandlerTestCase.test_predicateIsTrue_handlerReturnsFalse_fails' failed \(\d+\.\d+ seconds\).
     func test_predicateIsTrue_handlerReturnsFalse_fails() {
-        let predicate = Predicate(value: true)
+        let predicate = NSPredicate(value: true)
         let object = NSObject()
         self.expectation(for: predicate, evaluatedWith: object, handler: { _ in
             return false
@@ -42,7 +42,7 @@
     // CHECK: Test Case 'PredicateHandlerTestCase.test_predicateIsTrueAfterTimeout_handlerIsNotCalled_fails' failed \(\d+\.\d+ seconds\).
     func test_predicateIsTrueAfterTimeout_handlerIsNotCalled_fails() {
         let halfSecLaterDate = NSDate(timeIntervalSinceNow: 0.2)
-        let predicate = Predicate(block: { evaluatedObject, bindings in
+        let predicate = NSPredicate(block: { evaluatedObject, bindings in
             if let evaluatedDate = evaluatedObject as? NSDate {
                 return evaluatedDate.compare(Date()) == ComparisonResult.orderedAscending
             }
