SlideShare a Scribd company logo
BDD MIT
MACHINE.SPECIFICATIONS
Kontakt
Alexander Groß
Dipl.-Ing. (BA)
@agross
http://therightstuff.de
agross@therightstuff.de
BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)
keine vorher festgelegte Agenda
keine Rollenaufteilung in „Sprecher“
und „Zuhörer“
alle sind
gleich
keine
endlosen
Foliensätze
Erfahrungs-
austausch im
Vordergrund
Selbstorganisation
keine vorher
definierten
„Slots“
„Konferenz
aus
Kaffeepausen“
Teilnahme
ist
kostenlos
netopenspace.de
BDD mit Machine.Specifications (MSpec)
Aaron Jensen, Alexander Groß, Jacob Lewallen,
smaclell, Jeffrey Olson, Barry Woods, Lee Henson,
Stephen Czetty, SaintGimp, Ivan Korneliuk,
Laurent Kempé, abombss, Sean Carpenter, Jeffery
Olson, James Gregory, Scott Parker, Chris Bilson,
Cristian Prieto
Signal vs. Noise
[TestClass]
public class AccountControllerTest
{
[TestMethod]
public void LogOn_Post_ReturnsRedirectOnSuccess_WithoutReturnUrl()
{
AccountController controller = GetAccountController();
LogOnModel model = new LogOnModel()
{
UserName = "someUser",
Password = "goodPassword",
RememberMe = false
};
ActionResult result = controller.LogOn(model, null);
Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
RedirectToRouteResult redirectResult = (RedirectToRouteResult)result;
Assert.AreEqual("Home", redirectResult.RouteValues["controller"]);
Assert.AreEqual("Index", redirectResult.RouteValues["action"]);
Assert.IsTrue(((MockFormsAuthenticationService)controller.FormsService)
.SignIn_WasCalled);
}
A
A
A
[TestClass]
public class AccountControllerTest
{
[TestMethod]
public void LogOn_Post_ReturnsRedirectOnSuccess_WithoutReturnUrl()
{
AccountController controller = GetAccountController();
LogOnModel model = new LogOnModel()
{
UserName = "someUser",
Password = "goodPassword",
RememberMe = false
};
ActionResult result = controller.LogOn(model, null);
Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
RedirectToRouteResult redirectResult = (RedirectToRouteResult)result;
Assert.AreEqual("Home", redirectResult.RouteValues["controller"]);
Assert.AreEqual("Index", redirectResult.RouteValues["action"]);
Assert.IsTrue(((MockFormsAuthenticationService)controller.FormsService)
.SignIn_WasCalled);
}
„There are only two hard problems in
Computer Science: cache invalidation and
naming things.“
-- Phil Karlton
public class When_a_user_logs_in_with_valid_credentials
{
It should_authenticate_the_user;
It should_redirect_to_the_home_page;
}
public class When_a_user_logs_in_with_valid_credentials
{
Establish context = () =>
{
// Arrange
};
Because of = () =>
{
// Act
};
It should_authenticate_the_user =
() => { /* Assert */ };
It should_redirect_to_the_home_page =
() => { /* Assert */ };
}
A
A
A
= () =>
l<Tab> () => |;
ll<Tab> () => { | };
P_nis Operator
Establish Because It It It Cleanup
1 x
1 x
+ base classes
n x
[SetupForEachSpecification]
1 x
BDD mit Machine.Specifications (MSpec)
Exception Handling
Catch.Exception(() => { fails(); });
Templates
http://therightstuff.de/2010/03/03/MachineS
pecifications-Templates-For-ReSharper.aspx
Behaviors
Reporting
Niceties
 IAssemblyContext
 ReSharper Annotations
 Side-By-Side Specs
 TeamCity-Support
 Mighty Moose
Web Testing mit Selenium RC
Downloads
CI Builds
http://teamcity.codebetter.com/
nuget
Install-Package machine.specifications
OpenWrap
o add-wrap machine.specifications
Get involved
https://github.com/machine/machine.specifications
Get involved
Mailing List
groups.google.com/group/machine_users
Samples
github.com/agross/duplicatefinder
github.com/agross/mspec-samples
Extensions
github.com/BjRo/Machine.Fakes
github.com/jamesbroome/Machine.Specifications.Mvc
BDD mit Machine.Specifications (MSpec)

More Related Content

PDF
Large Language Models, Data & APIs - Integrating Generative AI Power into you...
PDF
AAD und .NET
PDF
SHIFT LEFT WITH DEVSECOPS
PDF
Securing .NET Core, ASP.NET Core applications
PDF
Application Security in ASP.NET Core
PDF
Ruby und Rails für .NET Entwickler
PPTX
Einführung in RavenDB
PDF
What Doctors Can Teach Us on Continuous Learning
Large Language Models, Data & APIs - Integrating Generative AI Power into you...
AAD und .NET
SHIFT LEFT WITH DEVSECOPS
Securing .NET Core, ASP.NET Core applications
Application Security in ASP.NET Core
Ruby und Rails für .NET Entwickler
Einführung in RavenDB
What Doctors Can Teach Us on Continuous Learning

More from NETUserGroupBern (20)

PDF
Entity Framework Core - Der Umstieg auf Core
PDF
Weiches Zeugs für harte Jungs und Mädels
PDF
Änderungen im Cardinality Estimator SQL Server 2014
PPTX
Rest Fundamentals
PDF
Refactoring: Mythen & Fakten
PDF
AngularJs
PDF
Pragmatische Anforderungen
PPTX
Einführung in MongoDB
PDF
What the hell is PowerShell?
PPTX
Know your warm up
PDF
Versionskontrolle mit Git
PDF
.NETworking Workshop Design Thinking
PDF
Reaktive Programmierung mit den Reactive Extensions (Rx)
PDF
Text Template Transformation Toolkit (T4)
PPTX
SOLID Code
PDF
ALM mit TFS 2010
PDF
O/R-Mapping mit NHibernate und Entity Framework 2/2
PDF
O/R-Mapping mit NHibernate und Entity Framework
PDF
Behavior Driven Development
PDF
ASP.NET MVC 2 - Eine Einführung
Entity Framework Core - Der Umstieg auf Core
Weiches Zeugs für harte Jungs und Mädels
Änderungen im Cardinality Estimator SQL Server 2014
Rest Fundamentals
Refactoring: Mythen & Fakten
AngularJs
Pragmatische Anforderungen
Einführung in MongoDB
What the hell is PowerShell?
Know your warm up
Versionskontrolle mit Git
.NETworking Workshop Design Thinking
Reaktive Programmierung mit den Reactive Extensions (Rx)
Text Template Transformation Toolkit (T4)
SOLID Code
ALM mit TFS 2010
O/R-Mapping mit NHibernate und Entity Framework 2/2
O/R-Mapping mit NHibernate und Entity Framework
Behavior Driven Development
ASP.NET MVC 2 - Eine Einführung
Ad

Recently uploaded (20)

PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
top salesforce developer skills in 2025.pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Transform Your Business with a Software ERP System
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
ai tools demonstartion for schools and inter college
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Introduction to Artificial Intelligence
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
L1 - Introduction to python Backend.pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
AI in Product Development-omnex systems
2025 Textile ERP Trends: SAP, Odoo & Oracle
Design an Analysis of Algorithms II-SECS-1021-03
top salesforce developer skills in 2025.pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
ISO 45001 Occupational Health and Safety Management System
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Odoo Companies in India – Driving Business Transformation.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Transform Your Business with a Software ERP System
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PTS Company Brochure 2025 (1).pdf.......
CHAPTER 2 - PM Management and IT Context
ai tools demonstartion for schools and inter college
Online Work Permit System for Fast Permit Processing
Introduction to Artificial Intelligence
Odoo POS Development Services by CandidRoot Solutions
L1 - Introduction to python Backend.pptx
Softaken Excel to vCard Converter Software.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
AI in Product Development-omnex systems
Ad

BDD mit Machine.Specifications (MSpec)