Winforms - лучший каталог / структура проекта

Похоже, что вам может понадобиться классовое приспособление .

Когда использовать: , когда вы хотите создать отдельный контекст теста и поделиться им среди всех тестов в классе и очистить его после завершения всех тестов в классе .

blockquote>

Создайте отдельный класс для настройки любых данных, которые будут использоваться вашими тестами, и для их очистки после завершения тестов.

public class MovieSeedDataFixture : IDisposable
{
    public MovieDbContext MovieContext { get; private set; } = new MovieDbContext();

    public MovieSeedDataFixture()
    {
        MovieContext.Movies.Add(new Movie { Id = 1, Title = "Movie 1", YearOfRelease = 2018, Genre = "Action" });
        MovieContext.Movies.Add(new Movie { Id = 2, Title = "Movie 2", YearOfRelease = 2018, Genre = "Action" });
        MovieContext.Movies.Add(new Movie { Id = 3, Title = "Movie 3", YearOfRelease = 2019, Genre = "Action" });
        MovieContext.SaveChanges();
    }

    public void Dispose()
    {
        MovieContext.Dispose();
    }
}

Затем используйте его в своих тестах, расширив интерфейс IClassFixture.

public class UnitTests : IClassFixture
{
    MovieSeedDataFixture fixture;

    public UnitTests(MovieSeedDataFixture fixture)
    {
        this.fixture = fixture;
    }

    [Fact]
    public void TestOne()
    {
        // use fixture.MovieContext in your tests

    }
}

8
задан leora 7 October 2008 в 19:47
поделиться

2 ответа

Для меня это зависит от модели, за которой я следую. Если бы я использую MVC, это было бы

Project
-Models
-Controllers
-Views

Или для MVP это было бы

Project
-Models
-Presenters
-Views

При представлениях я разделяю их в пространства имен, относящиеся к контроллерам, т.е. если у меня есть контроллер для обработки транзакций материально-технических ресурсов, у меня мог бы быть он как

Project
-Models
--Inventory
-Controllers
--Inventory
---TransactionsController.cs
-Views
--Inventory
---Transactions
----EditTransactionsView.dfm

Для интерфейсов я поместил интерфейс в тот же каталог как реализации.

7
ответ дан 5 December 2019 в 12:14
поделиться

Мы обычно сохраняем проекты SourceSafe, названия проекта, пространства имен и структуры каталогов в синхронизации.

Например, учитывая наше название компании как XCENT структура SourceSafe и соответствующая структура каталогов для App1 похожи:

\XCENT
\XCENT\App1
\XCENT\App1\UI
\XCENT\App1\UI\Test //test harness for UI
\XCENT\App1\Data
\XCENT\App1\Data\Test //test harnesses for Data

и т.д.

Проект UI называют XCENT.App1. UI.cproj и классы в том пространстве имен являются XCENT.App1. UI

Мы работаем на многие клиенты также, таким образом, работа специально для них снабжается префиксом их имя. Client1\App1\UI, и т.д.

Все в нашей фирме используют те же конвенции, и сразу ясно, где все соответствует.

Если имеет смысл сегментировать логический интервал далее, мы делаем так. Такая другая сегментация включает.Export.Import.Reporting.Security, и т.д.

0
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: