8000 GitHub - davidknise/supertestbase: A TestBase class for auto mock and constructor testing.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

davidknise/supertestbase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SuperTestBase

A TestBase class for auto mock and constructor testing and other test helpers using Moq.

Code Guidelines

  • Reach every function from test code:
    • Use internal instead of private
    • Add an AssemblyInfo.cs file to each project that exposes internals to the test assembly
    • What about encapsulation? You should not be calling your class directly but exposing an interface that matches your public functions. Whether your functions are private or internal shouldn't be noticeable anywhere.
  • Mark functions with virtual to allow Moq to override them
    • In addition to a mocked unit under test, you will also get a MockObject which allows you to mock and verify other functions on your unit under test. This only works if Moq can override your function.
    • Additional requirement - can't use sealed on the class, as Moq needs to inherit from it.
  • Write small functions!
    • Single Responsibility Principle (SRP) - have your functions do one thing to help isolate code to test.
    • Beware of the word "and" - if your function does this and this and that, it likely does too much.
  • Do not use static classes or functions
    • You can't mock it out and thus have to also test what the static function does from each and every caller.
    • If you really need a static class, make it a singleton with an Instance property as a get-out-of-jail free card.

SampleApp

See the SampleApp in the solution or /sample folder.

App.cs is how code would be expected to be written.

TestableApp.cs is how the code looks like adhering to these code guidelines for testability.

The associated AppTests and (TestableAppTests)(/sample/SampleApp.Tests/TestableAppTests.cs) demonstrate the difference in testability.

About

A TestBase class for auto mock and constructor testing.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0