--- a/src/features/bytes.rs
+++ b/src/features/bytes.rs
@@ -64,7 +64,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod test {
     use alloc::string::String;
     use alloc::vec::Vec;
--- a/src/features/markup.rs
+++ b/src/features/markup.rs
@@ -13,7 +13,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 #[test]
 fn test_markup() {
     const TEXT: &str = "<script>alert('Hello, world!')</script>";
--- a/src/features/rkyv.rs
+++ b/src/features/rkyv.rs
@@ -51,7 +51,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod tests {
     use alloc::string::String;
 
--- a/src/features/serde.rs
+++ b/src/features/serde.rs
@@ -71,7 +71,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod tests {
     use alloc::string::{String, ToString};
     use alloc::vec::Vec;
--- a/src/features/smallvec.rs
+++ b/src/features/smallvec.rs
@@ -27,7 +27,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, features = "std"))]
 mod tests {
     use alloc::string::String;
 
--- a/src/features/zeroize.rs
+++ b/src/features/zeroize.rs
@@ -10,7 +10,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod tests {
     use std::string::ToString;
 
--- a/src/repr/bytes.rs
+++ b/src/repr/bytes.rs
@@ -77,7 +77,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod test {
     #[cfg(feature = "std")]
     use std::io::Cursor;
--- a/src/tests.rs
+++ b/src/tests.rs
@@ -1,3 +1,4 @@
+#![cfg(feature = "std")]
 use alloc::borrow::Cow;
 use alloc::boxed::Box;
 use alloc::string::{String, ToString};
--- a/src/traits.rs
+++ b/src/traits.rs
@@ -198,7 +198,7 @@
     }
 }
 
-#[cfg(test)]
+#[cfg(all(test, feature = "std"))]
 mod tests {
     use alloc::string::{String, ToString};
     use alloc::vec::Vec;
