Jest to konwencja, którą można zobaczyć na stronie internetowej sitecore.dll. Służy do zgłaszania wyjątku, jeśli ten warunek nie jest spełniony.
Na przykład, jeśli spojrzeć na Assert.IsTrue, jeśli warunek nie jest spełniony system będzie rzucać „InvalidOperationException”
De-kompilacji metodę z Search API znalazłem to.
Assert.IsTrue(local_0 != null, "SearchConfiguration is missing");
Następnie jeśli de-kompilacji IsTrue, daje nam
[AssertionMethod]
public static void IsTrue([AssertionCondition(AssertionConditionType.IS_TRUE)] bool condition, string message)
{
if (!condition)
throw new InvalidOperationException(message);
}
Aby odpowiedzieć na to inne pytanie można użyć tego w kodzie aplikacji, jak widać jej tylko inny sposób rzucania wyjątek, jeśli warunek nie jest spełniony.
Zamieszanie przychodzi z użyciem słowa "assert", które, jak powiedziałeś, jest zwykle postrzegane w kontekście testów jednostkowych w tradycyjnym rozwiązaniu C# .NET. Tak długo, jak wiesz, co za scenariuszem Sitecore robi za kulisami, zależy to od Ciebie, czy chcesz z niego korzystać, czy nie.
Warto zauważyć, że "System.Diagnostics.Debug.Assert" jest warunkowe i będzie uruchamiane tylko w kompilacjach DEBUG aplikacji. Sitecore.Assert nie ma takich ograniczeń, więc wywoła wyjątek InvalidOperationException, gdy warunek testu nie powiedzie się w obu kompilacjach DEBUG i RELEASE. –
Czy możesz wyjaśnić "Assert czyści trochę rzeczy". Czy to oznacza, że wyjątek jest spuchnięty. Nadal nie widzimy powodu, dla którego tego potrzebujemy. –
Jak mówi Kevin, nie chcesz polegać tylko na dowodach. Assert ma na celu omówić przypadki, które mogą pomóc w trakcie testowania, takie jak brak zasobów lub wartość, która nie powinna mieć wartości zerowej. Nadal należy używać sprawdzania poprawności i wyjątków oraz obsługi wyjątków dla kodu produkcyjnego, ponieważ asserts nie działają w kompilacji wydania. Są pomocne podczas testowania, ponieważ są szybkie w dodawaniu i mogą dostarczyć więcej informacji przy niewielkim wysiłku. –