我正在使用RunListener让它们在写入System.out时失败,但是当我失败()单元测试时,将删除侦听器。有没有办法让测试失败而不删除监听器?
澄清代码示例
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CellTrack", forIndexPath: indexPath) as! TrackTableViewCell
if cell == nil {
// create a new cell here
cell = TrackTableViewCell(...)
}
cell.username.text = usernames[indexPath.row]
cell.songTitle.text = songs[indexPath.row]
cell.CreatedOn.text = dates[indexPath.row]
return cell
}
我期待的是:2次测试失败 是什么:第一次测试失败,并且监听器被删除。
根据要求,这是OutputListener代码http://paste.robbi5.com/4916ca5b 可以不在这里粘贴它,它很长并且不能帮助解决这个问题吗?
多一点背景
我选择了RunListener,因为maven非常简单,只需添加
public class OutputListenerTest {
@Test
public void testPrintIsDicovered() {
JUnitCore runner = new JUnitCore();
// the OutputListener calls fail() when something was written
runner.addListener(new OutputListener());
Result result = runner.run(TestWithOutput.class);
}
public static class TestWithOutput {
@Test
public void testOutput1() {
System.out.println("foo");
}
@Test
public void testOutput2() {
System.out.println("bar");
}
}
}
到maven-surefire-plugin, <properties>
<property>
<name>listener</name>
<value>OutputListener</value>
</property>
</properties>
显示哪些测试以某种方式使用System.out。
答案 0 :(得分:1)
添加一个Runner来添加监听器。
public class AddListenerRunner extends BlockJUnit4ClassRunner {
public AddListenerRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override public void run(RunNotifier notifier){
notifier.addListener(new OutputListener());
super.run(notifier);
}
}
然后你可以在你的测试中使用它。
@RunWith(AddListenerRunner.class)
public class OutputListenerTest {
@Test
public void testOutput1() {
System.out.println("foo");
}
@Test
public void testOutput2() {
System.out.println("bar");
}
}