When testing my controller's actions the ModelState is always valid.
public class Product
{
    public int Id { get; set; }
    [Required]
    [StringLength(10)]
    public string Name { get; set; }
    [Required]
    public string Description { get; set; }
    [Required]
    public decimal Price { get; set; }
}
And my controller.
public class ProductController : Controller
{
      [HttpPost]
      public ActionResult Create(Product product)
      {
            if (ModelState.IsValid)
            {
                   // Do some creating logic...
                   return RedirectToAction("Display");
            }
             return View(product);              
      }
 }
And test:
[Test]
public TestInvalidProduct()
{
     var product = new Product();
     var controller = new ProductController();
     controller.Create(product);
     //controller.ModelState.IsValid == true
}
Why the modelState is valid when the product doesn't have a name, Description and price?