Почему статический элемент не инициализируется до запуска методов испытаний?C#

Место общения программистов C#
Ответить
Anonymous
 Почему статический элемент не инициализируется до запуска методов испытаний?

Сообщение Anonymous »

В следующем коде тестирования мы инициализируем статическую переменную члена _mapper в строке 14. Однако тест Mapddmtokumoarticle выполняется до того, как эта инициализация произойдет, и, таким образом, мы имеем NullReferenceErr On Line 41.
Почему статика не инициализируется . /> Как показано ниже, я могу исправить его, инициализируя внутри конструктора, но затем мы получаем нагрузки предупреждений о том, что _mapper «может быть null.
pre -pre Pre wy. class = "lang-cs prettyprint-override"> public class DataMapTests
{
static readonly IOptions TestOptions = Options.Create(TestConstants.TestOptions);

// Line 14: Should initialize here but it's not running first!
static Mapper _mapper = DataMap.InitializeAutomapper(TestOptions.Value);

public DataMapTests()
{
// This line uncommented, fixes the problem but WHY is it necessary
//_mapper = DataMap.InitializeAutomapper(TestOptions.Value);
}

[Fact]
public void MapDDMToKumoArticle()
{
DDMArticle ddmArticle = FileReader.DeserializeFile("article_event.json");

// Line 41: Inside DataMap we get a NullReferenceError because InitializeAutomapper has not been called
KumoArticle article = DataMap.DDMArticleToKumo(ddmArticle, ddmArticle.TradeItems[0]);
}
< /code>
Обновление: реализация DataMap < /p>
public static class DataMap
{
private static Dictionary language = TcposLanguageMapping;
private static Mapper _mapper;

public static Mapper InitializeAutomapper(TcposOptions options)
{
var shopType = ShopTypeDictionary;
var shopOwner = ShopOwnerDictionary;
var canton = CantonDictionary;

var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap
()
.ForMember(dest => dest.Id, act => act.MapFrom(src => $"5{src.BranchIdentifier}"));
});
// Here the private member _mapper is initialized
_mapper = new Mapper(config);
return _mapper;
}

public static KumoArticle DDMArticleToKumo(DDMArticle article, TradeItem tradeItem)
{
// This line throws a NullReferenceException because _mapper has not been initialized
KumoArticle kumoArticle = _mapper.Map(article);


Подробнее здесь: https://stackoverflow.com/questions/796 ... ds-are-run
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»