Поместите метод в group
и используйте dependsOnGroups
.
class c1 {
@Test(groups={"c1.verifyConfig"})
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnGroups={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
Рекомендуется проверить конфигурацию в @Before
* и выбросить, если что-то пойдет не так, чтобы тесты не запускались. Таким образом, тесты могут фокусироваться только на тестировании.
class c2 {
@BeforeClass
public static void verifyConfig() {
//verify some test config parameters
//Usually just throw exceptions
//Assert statements will work
}
@Test
public void dotest() {
//Actual test
}
}
OrderBy
ожидает функцию выбора ключа типа Func
и необязательный IComparer
для определения само сравнение.
Вам понадобятся следующие определения помощников:
class FunctorComparer<T> : IComparer<T> {
private readonly Comparison<T> m_Comparison;
public FunctorComparer(Comparison<T> Comparison) {
this.m_Comparison = Comparison;
}
public int Compare(T x, T y) {
return m_Comparison(x, y);
}
}
static Comparison<TKey> Compare<TKey, TRes>(Func<TKey, TRes> Selector) where TRes : IComparable<TRes> {
return (x, y) => Selector(x).CompareTo(Selector(y));
}
Теперь вы можете написать
Comparison<POLine> x;
if (option)
x = Compare<POLine, int>(l => l.PartNumber);
else
x = Compare<POLine, string>(l => l.LineOrder);
var res = poLines.OrderBy(i => i, new FunctorComparer<POLine>(x));
Вы можете рассмотреть возможность использования Dynamic LINQ из образцов VS2008 . Затем вы можете сделать:
var orderedLines = poLines.OrderBy( poLineOrder ? "PartNumber" : "LineOrder" );