diff --git a/TUnit.Mocks.SourceGenerator.Tests/MockGeneratorTests.cs b/TUnit.Mocks.SourceGenerator.Tests/MockGeneratorTests.cs
index ad61c62f9c..80871657e4 100644
--- a/TUnit.Mocks.SourceGenerator.Tests/MockGeneratorTests.cs
+++ b/TUnit.Mocks.SourceGenerator.Tests/MockGeneratorTests.cs
@@ -535,6 +535,46 @@ void M()
return VerifyGeneratorOutput(source);
}
+ [Test]
+ public Task Class_Implementing_Static_Abstract_Interface()
+ {
+ // Mirrors the T15 KitchenSink shape: a class implementing an interface that has a
+ // static-abstract member plus an instance virtual member. The generator must NOT
+ // emit a MockBridge interface for class targets (CS0527 / CS0540); the class
+ // already provides the concrete static impl, the mock only overrides the
+ // instance-virtual surface.
+ //
+ // The verified snapshot for this test intentionally OMITS a `_MockBridge.g.cs`
+ // file section — that absence is the assertion. Class targets must not get
+ // bridge generation, unlike the interface-target variants in this file which
+ // do produce a bridge.
+ var source = """
+ using TUnit.Mocks;
+
+ public interface IStaticAbstractFactory
+ {
+ static abstract IStaticAbstractFactory Create();
+ int InstanceValue { get; }
+ }
+
+ public class StaticAbstractImpl : IStaticAbstractFactory
+ {
+ public static IStaticAbstractFactory Create() => new StaticAbstractImpl();
+ public virtual int InstanceValue => 99;
+ }
+
+ public class TestUsage
+ {
+ void M()
+ {
+ var mock = StaticAbstractImpl.Mock();
+ }
+ }
+ """;
+
+ return VerifyGeneratorOutput(source);
+ }
+
[Test]
public Task Interface_With_Inherited_Static_Abstract_Members()
{
diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt
new file mode 100644
index 0000000000..c7a22fdc45
--- /dev/null
+++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt
@@ -0,0 +1,100 @@
+//
+#nullable enable
+
+namespace TUnit.Mocks.Generated
+{
+ file sealed class StaticAbstractImplMockImpl : global::StaticAbstractImpl, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject
+ {
+ private readonly global::TUnit.Mocks.MockEngine _engine;
+
+ [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
+ global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; }
+
+ internal StaticAbstractImplMockImpl(global::TUnit.Mocks.MockEngine engine) : base()
+ {
+ _engine = engine;
+ }
+
+ public override int InstanceValue
+ {
+ get
+ {
+ if (_engine.TryHandleCallWithReturn(0, "get_InstanceValue", global::System.Array.Empty