diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
index 9078256e54b1b1d5a341cf40518bd50ff3a47a8b..6dd5f45e97eb075e550601709946d43816bfb8a8 100644
--- a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
+++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
@@ -44,7 +44,9 @@ func (gb *RustCompiler) CheckCompileErrors(srcCode []byte, dependencies ...strin
 	}
 
 	// Run go build
-	cmdString += " cargo check"
+	cmdString += " cargo build"
+
+	cmdString += " && cargo test"
 
 	//cmdSlice := strings.Fields(cmdString)
 	cmd := utils.MakeCommand(cmdString)
diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
index 4e3d3e097ed708327510f3dc57614e11f4620b93..169049b3088a05ff90a5eb72d6ff2ab148c04fda 100644
--- a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
+++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
@@ -27,6 +27,16 @@ func TestCompileStringToRust(t *testing.T) {
 			shouldCompile: true,
 			dependencies:  []string{"rand", "colored"},
 		},
+		{
+			filename:      "should_compile_and_run_tests",
+			shouldCompile: true,
+			dependencies:  nil,
+		},
+		{
+			filename:      "should_compile_with_faulty_test",
+			shouldCompile: false,
+			dependencies:  nil,
+		},
 	}
 
 	for _, test := range tests {
diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests
new file mode 100644
index 0000000000000000000000000000000000000000..1a75cfa8fdf08d8cec2cff77d4b0d956c7b2e351
--- /dev/null
+++ b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests
@@ -0,0 +1,36 @@
+fn divide(a: f64, b: f64) -> Result<f64, String> {
+    if b == 0.0 {
+        return Err(String::from("Cannot divide by zero"));
+    }
+    Ok(a / b)
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_divide_positive_numbers() {
+        let result = divide(10.0, 2.0);
+        assert_eq!(result.unwrap(), 5.0);
+    }
+
+    #[test]
+    fn test_divide_negative_numbers() {
+        let result = divide(-10.0, 2.0);
+        assert_eq!(result.unwrap(), -5.0);
+    }
+
+    #[test]
+    fn test_divide_by_zero() {
+        let result = divide(10.0, 0.0);
+        assert!(result.is_err());
+    }
+}
+
+fn main() {
+    match divide(10.0, 2.0) {
+        Ok(result) => println!("10.0 divided by 2.0 is {}", result),
+        Err(e) => println!("Error: {}", e),
+    }
+}
diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test
new file mode 100644
index 0000000000000000000000000000000000000000..d22217d9d7ec70d0638e5ad67bf9f0177cd68030
--- /dev/null
+++ b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test
@@ -0,0 +1,32 @@
+// Function to add two numbers
+fn add(a: i32, b: i32) -> i32 {
+    a + b
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_add_positive_numbers() {
+        let result = add(2, 3);
+        assert_eq!(result, 5);
+    }
+
+    #[test]
+    fn test_add_negative_numbers() {
+        let result = add(-2, -3);
+        assert_eq!(result, -5);
+    }
+
+    #[test]
+    fn test_add_faulty() {
+        // This test is intentionally faulty
+        let result = add(2, 2);
+        assert_eq!(result, 5); // This will fail because 2 + 2 is actually 4
+    }
+}
+
+fn main() {
+    println!("2 + 3 = {}", add(2, 3));
+}