Shopping cart code kata
public double Price { get; set; } clearly should be of type Decimal. That is what Decimal for.
private static List&lt;CartItem&gt; CartItems = null; can be safely refactored to Dictionary&lt;int, CartItem&gt; with ProductId used as keys. Then CheckItemExistThenAddToCart can be refactored using Dictionary.ContainsKey method, and GetCartItems can return dictionary itself, CartItems.Values or CartItems.Values.ToList(). I think the latter option is the best, since it will copy the collection, which will restrict access to CartItems property. As of now, someone might modify it in outer code, which will result it modifying ShoppingCart state. Returning a copy will prevent that.
return (CartItems as IEnumerable).GetEnumerator(); cast can be removed.
I'm not sure i like the idea of having two methods to add items to the cart, which have different logic. It's pretty error-prone. Is it really necessary? I think you should probably stick to one. 
I think your shopping cart interface misses Remove method.


Your unit tests look fine to me (except you should move them to different file), tho i'm not too experienced with them.