diff --git a/test/binary-elementwise-operator-tester.h b/test/binary-elementwise-operator-tester.h
index 33c24b0..9a45854 100644
--- a/test/binary-elementwise-operator-tester.h
+++ b/test/binary-elementwise-operator-tester.h
@@ -26,6 +26,8 @@
   enum class OperationType {
     Unknown,
     Add,
+    Maximum,
+    Minimum,
     Multiply,
     Subtract,
   };
@@ -116,6 +118,10 @@
     switch (operation_type()) {
       case OperationType::Add:
         return a + b;
+      case OperationType::Maximum:
+        return std::max<float>(a, b);
+      case OperationType::Minimum:
+        return std::min<float>(a, b);
       case OperationType::Multiply:
         return a * b;
       case OperationType::Subtract:
@@ -211,6 +217,16 @@
               output_min, output_max,
               0, &binary_elementwise_op));
           break;
+        case OperationType::Maximum:
+          ASSERT_EQ(xnn_status_success,
+            xnn_create_maximum_nd_f32(
+              0, &binary_elementwise_op));
+          break;
+        case OperationType::Minimum:
+          ASSERT_EQ(xnn_status_success,
+            xnn_create_minimum_nd_f32(
+              0, &binary_elementwise_op));
+          break;
         case OperationType::Multiply:
           ASSERT_EQ(xnn_status_success,
             xnn_create_multiply_nd_f32(
@@ -243,6 +259,28 @@
               input1.data(), input2.data(), output.data(),
               nullptr /* thread pool */));
           break;
+        case OperationType::Maximum:
+          ASSERT_EQ(xnn_status_success,
+            xnn_setup_maximum_nd_f32(
+              binary_elementwise_op,
+              num_input1_dims(),
+              input1_shape().data(),
+              num_input2_dims(),
+              input2_shape().data(),
+              input1.data(), input2.data(), output.data(),
+              nullptr /* thread pool */));
+          break;
+        case OperationType::Minimum:
+          ASSERT_EQ(xnn_status_success,
+            xnn_setup_minimum_nd_f32(
+              binary_elementwise_op,
+              num_input1_dims(),
+              input1_shape().data(),
+              num_input2_dims(),
+              input2_shape().data(),
+              input1.data(), input2.data(), output.data(),
+              nullptr /* thread pool */));
+          break;
         case OperationType::Multiply:
           ASSERT_EQ(xnn_status_success,
             xnn_setup_multiply_nd_f32(
