Thanks guys for your answers. I have a solution now that works for me, without putting the interface in a separate assembly and in the GAC. I'm not looking at using the interface for other projects, just using the same interface for multiple services in the same project.
What I was trying to do was make the change between RealService and TestService in the configuration file of the WCF service, so the client would not know the difference (the client would not have to change its configuration to point to a different .svc file). I'm not sure this is possible, or it least if it is, it is definitely not straightfoward.
What I am doing now is just specifying both services in the configuration file of the WCF service, and then I point the client to one or the other based on which service I want. Since this WCF service is for internal use only and we have control of both the client and the service, it is not a bad tradeoff. This solution is probably more explicit in its intentions anyways.
Here is the snippet of the configuration file:
<services>
<service behaviorConfiguration="WcfService1.Service1Behavior"
name="WcfService1.TestService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="testBasicHttpBinding"
contract="WcfService1.IUselessService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="WcfService1.Service1Behavior"
name="WcfService1.RealService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="testBasicHttpBinding"
contract="WcfService1.IUselessService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>