我有一个可在多个操作系统上运行的客户端Java应用程序。
我想测试在不同的OS中运行时给出不同期望的逻辑。
例如,当我在Windows上运行时,逻辑将通过,而当我在OSX上运行时,逻辑将引发异常。
我可以编写两个单独的测试,并针对不同的操作系统使用单独的构建配置文件仅执行一个测试,但是有可能编写一个单一的junit测试,该测试在不同的OS下表现会有所不同。 ?
对于OSX,我希望对测试进行例外注释,这是预期的结果;对于Windows,常规逻辑应该可以工作。在Junit中,运行时的期望值在某些情况下可能会有所不同吗?
最好的问候,
Saurav
答案 0 :(得分:5)
使用System.getProperty("os.name")
,您可以检查所使用的操作系统,然后可以使用条件运行来排除特定操作系统上不需要的测试用例,例如
public class SomeTest {
@Rule
public ConditionalIgnoreRule rule = new ConditionalIgnoreRule();
@Test
@ConditionalIgnore( condition = NotRunningOnWindows.class )
public void testFocus() {
// ...
}
}
public class NotRunningOnWindows implements IgnoreCondition {
public boolean isSatisfied() {
return !System.getProperty( "os.name" ).startsWith( "Windows" );
}
}
来源:code affine