失败时删除JUnit RunListener()

时间:2015-10-19 06:34:27

标签: java junit listener

我正在使用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。

1 个答案:

答案 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");
    }
}