Usamos Frameworks y somos entusiastas de los DSL

Usamos DSL para casos de prueba y mocks ya que genera un mayor nivel de abstracción que permite manejar un lenguaje con una sintaxis muy legible, muy cercano al idioma inglés, fácil de entender por cualquier persona que conozca el vocabulario del dominio (gente de negocio) sin que tenga que saber cuestiones técnicas de programación.
Para el equipo de desarrollo es muy útil usar un DSL ya que facilita las tareas de depurar el código ya que es más simple, se generan menos líneas de código que en un lenguaje de propósito general para hacer lo mismo.
Los DSL son fáciles de aprender para otros desarrolladores dado que manejan un contexto limitado al problema que se quiere resolver.

Ejemplo de su utilización

    

{ factory = CarFactory(); brand = Toyota; color = Black; type = Sedan; car = factory.BuildCar(brand, color, type); carshop = CarShop(); carshop.AddProduct(car); brand = BMW; color = White; type = Sedan; car = factory.BuildCar(brand, color, type); carshop.AddProduct(car); for (car : carshop.CarsForSale()) {     print car.Brand brand;     print car.Color color;     print car.Type type; } }