coding naked-2018 devconnectionsfiles.informatandm.com/uploads/2018/10/coding_naked_unit...microsoft...

93
#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM Coding Naked Unit Testing Those Hard to Reach Places Caleb Jenkins Technology Leader Quicken Loans

Upload: others

Post on 28-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Coding NakedUnit Testing Those Hard to Reach Places

Caleb JenkinsTechnology LeaderQuicken Loans

Page 2: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

U n i t Te s t i n g t h o s e h a r d t o r e a c h p l a c e s !

Coding Naked!

Page 3: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 4: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 5: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

developingUX.comspeakerpedia.com/speakers/caleb-jenkins

@calebjenkins#CodeMash

Page 6: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

of our clients would recommend us to others. *

* industry average is 11%

on refi or closing fees, plus work with our exclusive internal team!

rockframework.github.iogithub.com/quickenloans

Page 7: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Tuesday

Wednesday

Wednesday

Page 8: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Automated Unit Test

Fundamentals

Hard to Reach Places

Page 9: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Coding Naked

back to…

Page 10: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Is TDD only for coding elites?

Page 11: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

or something for every developer?

Page 12: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

How do we make Automated Tests the norm?

Page 13: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

make coding without tests as

uncomfortable as coding naked

Page 14: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

* this is not me

Page 15: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

15

what are the 4 big parts of unit tests?what are the 4 big parts of unit tests?

Page 16: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Test Framework Test Runner

Code Tests

16

your applicationwhat you want to test

your test codethe code that tests the

code that you wrote or are going to write

attributes and assertsthe framework provides

the attributes and asserts so we know what the tests

are doing. Examples: nUnit jUnit

cppUnit

runs the testsoften associated with the

test framework; is distinctly separate.

sometime integrated in IDE, CI Server or stand

alone exe

Page 17: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Test Runner

17

Code

Test

Fra

me

wo

rk

Tests

Tests

Tests

Tests

Tests

Page 18: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Start

ATest RunnerB

C Test Code

Test Framework

Page 19: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

19

Test Framework

Page 20: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

github.com/tpierrain/NFluent

github.com/erichexter/Should

Page 21: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

nUnit Test Runner

Test Runners

21

Visual Studio (VS Test)

CodeRush / ReSharperContinuous Integration (Team City)

Page 22: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

3 A’s

22

Arrange– Set up the scenario and the initial input values. Often in a

common [TestFixtureSetup] or [Setup] method

Act - Action that creates the outcome that is being tests, usually

calling some method in your code to test the result.

Assert – Is a boolean statement to your testing framework to

declare the expected outcome. Results in Pass or Fail

Arrange Act Assert

Test Code

Page 23: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Data Access

Data Logic

Integration Service Proxy

App Domain Domain Validation

UI Logic

UI

Building better Lego’s

Tests are small

Tests are fast

Tests focus on one thing

Page 24: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Page 25: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Page 26: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Red

GreenRefactor

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Page 27: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Test Runner

return valuesno dependencies…

App Domain Domain Validation

UI Logic

Test Code

Unit Tests focus on a UnitTest a unit in isolation from other unitsControl input => Testable output

Simple Tests

Page 28: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

VSTest

Page 29: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Start

Test Runner

Test Code

Test Framework

Page 30: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 31: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Set the Scene

Page 32: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

as a <role>,I will <function>so that <value>

Defining BehaviorDiscussion

Page 33: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

what if our “tests”

given <class> to testwhen <setup> scenariothen <test> outcome

matched ourlanguage?

Discussion

Page 34: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Discussion

BDD

Page 35: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Resources & Frameworks

BDDhttp://neelnarayan.blogspot.com/2010/07/bdd-is-more-than-tdd-done-right.html

more than TDD done right

http://dannorth.net/introducing-bdd/

introducing BDD

http://lucisferre.net/2011/02/05/behavior-driven-test-driven-domain-driven-design/

behavior driven, test driven, domain driven

nBehave, nSpec, SpecFlow, StoryQ, mSpec, StorEvil

Page 36: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 37: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Handle your dependencies

Page 38: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Dependencies“The single greatest thing that you can do to make your code more testable and healthy is to start taking a Dependency Injection approach to writing software”

Dependencies“The single greatest thing that you can do to make your code more testable and healthy is to start taking a Dependency Injection approach to writing software”

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

Page 39: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Data Access

Data Logic

Integration Service Proxy

App Domain Domain Validation

UI Logic

UI

How do you test this

with thesedependencies

Harder to Test

Page 40: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Data Access

Data Logic

Integration Service Proxy

App Domain Domain Validation

UI Logic

UI

Page 41: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Test Runner

Test Code

Integration Service Proxy

App Domain Domain Validation

UI Logic

Dependency Injection + InterfacesFaked dependencies to increase unit isolationLeverage mocking frameworks makes life better

Page 42: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Note:Dependency InjectionNote:Dependency Injection

will turn you in to a complete coding Ninja, however the full scope of DI with any of the many DI frameworks is beyond the scope of this talk

will turn you in to a complete coding Ninja, however the full scope of DI with any of the many DI frameworks is beyond the scope of this talk

Page 43: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

http://developingUX.com/DI/

Page 44: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

http://developingUX.com/DI/

Page 45: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

Mocking Framework“A mocking framework allows you to create fake classes on the fly in-line with your test code. That is a bit of a simplification, mocking frameworks use a combination of emits, reflection and generics to create run-time instance implementations of .NET Interfaces – whew, that’s a mouthful - it’s a whole lot easier to say that they create fake classes on the fly!”

Mocking Framework“A mocking framework allows you to create fake classes on the fly in-line with your test code. That is a bit of a simplification, mocking frameworks use a combination of emits, reflection and generics to create run-time instance implementations of .NET Interfaces – whew, that’s a mouthful - it’s a whole lot easier to say that they create fake classes on the fly!”

Page 46: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Microsoft.Fakes

Page 47: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Bringing DI togetherBringing DI together

Page 48: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

IData mockData = MockRepository.GenerateMock<IData>();

mockData.Expect(x => x.getAll<account>()).Return(sampleAccounts).Repeat.Once();

IAccountServices accountService= new AcmeAccountService(mockData);

var act = accountService.GetAccount(known_account_id);

mockData.VerifyAllExpectations();

Page 49: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Start(Framework, Runner, Test Code)

Set the Scene

Handle your Dependencies

Page 50: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

the problem with edges

Page 51: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

UI DataBusiness

Edges areHard to Test

Page 52: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Testing edges can be like

testing to see if you’re good

at cliff jumping

Page 53: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

That’s not me

Page 54: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

..or you’restuff on a rock.

You’re either an expert and it works…

Page 55: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

UI DataDataLogic

UILogicBusiness

Edges areHard to Test

Edges are stillHard to Test

by separating UI/Data edges fromUI/Data logic we’re increasing the testable area

we’ve also made it easier to implementvarious UI and Data platforms

without affecting the application logic

Page 56: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 57: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Edges are all around us

Data

UI

Net

wor

k Disk IO

Page 58: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Edges are all around us

Net

wor

k

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Page 59: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Edges are all around us

INet

wor

kPro

xyRe

try L

ogic

/ For

mat

ting

Page 60: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Data

UI

Net

wor

k Disk IO

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM

Page 61: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

https://github.com/calebjenkins/Acme.CodingNaked

Page 62: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

These examples are for the expressed purpose ofdemonstrating unit testing scenarios.. none of this code(especially the supporting non-testing code) isintended to be deployed in production scenarios. Thisis just some code from a talk at some conference oruser group. There's no warranty, express or implied.Works on my machines. I don't know you and I don'tknow how you got here. Stop calling. I no live here,you no call back!

Page 63: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 64: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 65: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 66: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 67: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

“Don’t be silly”- Roy Osherove

The Art of Unit Testingpg. 77

Page 68: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

the problem with statics

Page 69: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 70: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

shared state be like..

Page 71: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 72: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 73: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 74: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

IDependency

IdependencyExtensionMethod

Class to Test

IdependencyMethod

Idependency Method

IdependencyMethod

Page 75: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 76: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 77: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 78: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 79: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 80: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 81: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 82: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 83: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

the challenges with Microsoft Fakes

Page 84: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 85: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

Identify your edges

Keep the edges dumb

Stop coding naked

Page 86: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

StartFramework, Runner, Test Code

Set the Scene

Handle your Dependencies

Page 87: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

no, seriously

Page 88: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 89: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date
Page 90: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

http://www.flickr.com/photos/jforth/5768064504/

http://www.flickr.com/photos/laughingsquid/255915238/

http://www.flickr.com/photos/dieselbug2007/370557683/

http://www.flickr.com/photos/m0php/530526644/

http://www.flickr.com/photos/lowfatbrains/80542761/

Page 91: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

http://www.flickr.com/photos/georgivar/4974112941/

http://www.flickr.com/photos/redbettyblack/395899686/sizes/

http://www.flickr.com/photos/goldberg/815408116/

http://www.flickr.com/photos/fudj/122371431/

http://www.flickr.com/photos/yardsale/4524101944/

http://www.flickr.com/photos/38738277@N04/3652658961/

Page 92: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

http://www.flickr.com/photos/utslibrary/6776175796/

http://www.flickr.com/photos/48725518@N03/4478990651/Copyright © Merriswheel – Used without permission

Page 93: Coding Naked-2018 DevConnectionsfiles.informatandm.com/uploads/2018/10/Coding_Naked_Unit...Microsoft PowerPoint - Coding Naked-2018_DevConnections.pptx Author cjenkins2 Created Date

developingUX.com@calebjenkins#ITDevConnections

#ITDEVCONNECTIONS | ITDEVCONNECTIONS.COM