An overview of automated testingUnit testingIntegration testingEnd-to-end testingOther types of testsFinding the right balanceEnhancing code qualityImproving quality with refactoringManaging technical debtTesting approachesTDDATDDBDDTesting techniquesWhite-box testingBlack-box testingGray-box testingWhite-box vs. black-box vs. gray-box testingConclusionTest case creationEquivalence partitioningBoundary value analysisDecision table testingState transition testingUse case testingIntroducing the xUnit frameworkHow to create an xUnit test projectKey xUnit featuresFactAttributeAssertionsTheoryAttributeFixtureArrange, Act, AssertOrganizing your testsUnit testsNamespacesTest class namesTest code inside the test classIntegration testsWriting ASP.NET Core integration testsClassic web applicationMinimal hostingWorkaroundAlternative to using fixturesCreating a reusable test applicationImportant testing principlesSummaryQuestionsFurther readingAnswers