Вы прокомментировали: не работа, если oldtable имеет столбец идентификационных данных.
я думаю, что это - Ваш ответ. #newtable получает столбец идентификационных данных от oldtable автоматически. Выполните следующие операторы:
create table oldtable (id int not null identity(1,1), v varchar(10) )
select * into #newtable from oldtable
use tempdb
GO
sp_help #newtable
Это показывает Вам, что #newtable действительно имеет столбец идентификационных данных.
, Если Вы не хотите столбец идентификационных данных, попробуйте это при создании #newtable:
select id + 1 - 1 as nid, v, IDENTITY( int ) as id into #newtable
from oldtable
Вы можете получить доступ к текущему состоянию тестов с помощью Test :: Builder , доступного через Test :: More-> builder
:
use strict;
use warnings;
use Test::More tests => 1;
ok(int rand 2, 'this test randomly passes or fails');
if (Test::More->builder->is_passing)
{
print "hooray!\n";
}
else
{
print "aw... :(\n";
}
В качестве альтернативы, вы можете просто выполнить очистку в конце сценария, но выйти раньше, если что-то пойдет не так, с помощью Test :: More
BAIL_OUT («причина, по которой вы уходите»);
.
Есть много других данных и статистики, которые вы можете собрать о состоянии ваших тестов; см. документацию для Test :: Builder .
Вот что я придумал, чтобы избежать Ошибка «Не удается найти метод объекта», показанная внизу этого ответа:
#! /usr/bin/perl
use strict;
use warnings;
use Test::More tests => 1;
ok(int rand 2, 'this test randomly passes or fails');
my $FAILcount = 0;
foreach my $detail (Test::Builder->details()) {
if (${%$detail}{ok}==0) { $FAILcount++; }
}
if ($FAILcount == 0) {
print "hooray!\n";
} else {
print "aw... :(\n";
}
В Solaris 10 с Perl v5.8.4 (с 31 зарегистрированным патчем) я получил следующее
Can't locate object method "is_passing" via package "Test::Builder"