В принципе, если весь ваш код равен x = y != ... y : string.empty
, вам нужны два тестовых примера для проверки, один для прохождения состояния и один для отказа.
Это может быть достигнуто двумя способами. Можно было бы создать тест-метод для каждого случая:
string MethodToTest(string y) {
return y != /* whatever your condition is */ ? y : string.empty
}
[Test]
public void Test1() {
Assert.AreEqual(MethodToTest("PassingCondition"), "PassingCondition");
}
[Test]
public void Test2() {
Assert.AreEqual(MethodToTest("NotPassingCondition"), string.empty);
}
Другой путь был бы создать один метод и добавить TestCase
атрибута по этому:
[TestCase("PassingCondition", Result = "PassingCondition")]
[TestCase("NotPassingCondition", Result = string.empty)]
public bool TheTest(string y) {
return MethodToTest(y);
}
Однако оба appraoches равны в средствах покрытия кода. Это зависит от фактического состояния того, как вы достигаете покрытия кода. Но вы не обеспечили фактическое условие, которое не позволило нам ответить на этот конкретный вопрос.
EDIT: Как вы также предоставили Rhino-mocks (который я не знаком) Я предполагаю, что вы проходите, поскольку условие возвращается методом, который вы хотите высмеять. Таким образом, издевайтесь над этим методом, возвращая условие прохождения, и один возвращает условие сбоя.
Не могли бы вы добавить ** настоящий ** код? Код, который вы предоставили, даже не компилируется! Кроме того, 100% охват кода не должен быть целью только ради самого себя. Каковы варианты использования и/или требования, которые необходимо проверить? –
Извините, мы не можем предоставить реальный код для решения проблемы соответствия, но мы просто хотим знать, как мы можем покрыть тернарный оператор, используя утверждение assert под кодом. Кроме того, в соответствии с нашим вариантом использования мы должны покрывать его по охвату кода. –
В основном вам нужны два тестовых случая для покрытия 100%, один для состояния 'y! = ...' pass и один для него. Однако в зависимости от того, какое это условие, вам, возможно, придется добавить больше случаев. Поэтому либо реализуйте два тестовых метода, либо создайте их, и примените атрибут 'TestCase' с параметром' Result'. – HimBromBeere