# Getting Started

Here are some guides to setup a Shouldly project.

## Setup a project with Dotnet CLI

In this guide, we will set up a project with Shouldly unit tests.

We won't use Visual Studio, we will build our project bare bones with Dotnet CLI and a text editor.

## Prerequisites

* Install [Dotnet CLI Tools](https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install).
* You need to install a text editor (Notepad++, VSCode, etc...).

## Creating the main program

The project structure will be as follows:

```csharp
/project-name
    project-name.sln
    /program
        ...
    /test
```

1. Create your root directory, name it your project name.
2. Open a terminal in your root directory.
3. Run `dotnet new sln`.
4. Go into program folder and run `dotnet new classlib`.
5. Rename *Class1.cs* to *Program.cs*.
6. Add the following code to *Program.cs*:

```csharp
using System;

public static class Program
{
    public static string TestWorks()
    {
        return "Works";
    }
}
```

Go to the root folder and run `dotnet sln add program/program.csproj`, in order to add *program* to your solution.

## Creating unit tests

In this part we will create the unit tests for the main program.

1. Move to test folder and run `dotnet new nunit` *(you can use others unit tests frameworks but in this guide we will stick to nunit)*.
2. Add a reference to the main program by running `dotnet add reference ../program/program.csproj`
3. In the root folder add the tests to the solution by running `dotnet sln add test/test.csproj`.

## Adding Shouldly

Now comes the important part, when we actually add Shouldly.

1. Go to the test folder and run `dotnet add package Shouldly`, to add Shouldly as a NuGet Package.
2. Add the following code to *UnitTest1.cs*:

```csharp
using NUnit.Framework;
using Shouldly;

public class Tests
{
    [Test]
    public void Test1()
    {
        Program.TestWorks().ShouldBe("Works");
    }
}
```

## Testing

To test your project, in your root folder run `dotnet test`.

And there you go, you have a basic project with unit tests using Shouldly.

## Summary

We created a classlib project using Dotnet CLI Tools, then added unit tests and added Shouldly as a NuGet package to be able to use Shouldly in our tests.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shouldly.org/documentation/getting-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
